初探ADO.NET #1,程式與資料庫互動的四大步驟

這四大步驟是我自己歸納的流程,不但對於 ASP、ASP.NET有用,轉型成PHP與JSP也是道理相同。如同武功高手打通任督二脈後,學什麼武功都快。只要瞭解這四大流程,我相信大部分需要連結資料庫的程式,都難不倒大家。






以下是我的新書內容,僅供參考:

ASP.NET  專題實務(I)(松崗出版),本書有VB、C#兩種版本!

===========================================================

這四大步驟是我自己歸納的流程,不但對於 ASP、ASP.NET有用,轉型成PHP與JSP也是道理相同。如同武功高手打通任督二脈後,學什麼武功都快。只要瞭解這四大流程,我相信大部分需要連結資料庫的程式,都難不倒大家。

第一, 連接資料庫(Connection)。
第二, 執行SQL指令(又分成兩大類:取出資料、或是寫入資料)。
第三, 自由發揮(通常這一段是畫面或流程的設計)。
第四, 關閉資源(如:關閉資料庫的連接)。

接下來將會看幾段程式碼,各位讀者不需死記,只要稍微瞭解一下,簡單看過即可。後續的文章會有更深入的解說。



 

6-1-1  ASP.NET與ADO.NET的簡單程式

ASP.NET從資料庫取出所有資料,程式如下(檔名 test_123.aspx):

<%@ Page Language="vb" %>

<%@ Import NameSpace = "System.Data" %>

<%@ Import NameSpace = "System.Data.SQLClient" %>

 

<%

'--註解:第一,連結SQL資料庫

Dim Conn As SQLConnection = New SQLConnection("server=localhost;

uid=test; pwd=test; database=test")

Conn.Open()

 

'--註解:第二,執行SQL指令,使用DataReader

Dim sqlstr As String = "select * from test"

Dim cmd As SQLCommand = New SQLCommand(sqlstr ,Conn)

Dim dr As SQLDataReader = cmd.ExecuteReader()

 

'--註解:第三,自由發揮

While dr.Read()

Response.Write("文章編號:" & dr.Item("id") & “<br>”)

Response.Write("    期:" & dr.Item("test_time")  & “<br>”)

      Response.Write("文章標題:" & dr.Item("title"))

      Response.Write("<hr>")

End While

 

'--註解:第四,關閉資源

cmd.Cancel()

dr.Close

 

Conn.Close

Conn.Dispose()

%>

上面的程式是把HTML和程式碼,混合寫在同一個檔案內,這種作法稱為Inline Code,是傳統ASP、PHP常用的方式。如果採用VS 2005/2008來寫程式,則會把「HTML畫面」與「程式碼」各自獨立,分屬兩個不同的檔案。

 6-1-2 JSP、PHP也可用四大步驟

上面的程式,是最簡單的一支ASP.NET程式了,包含了ADO.NET的技術可以連結資料庫,並且執行SQL指令(Select * From test)取出資料。以下我們用JSP撰寫相同功能的網頁程式,讀者會發現:原來如此,不管是JSP或ASP.NET都一樣,不就是那四大步驟而已。

<%@page contentType="text/html;charset=Big5"

  import="java.sql.*" %>

 

<% //註解:第一,連結資料庫

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

//透過ODBC連結MS SQL Server 2000,驅動程式管理員java.sql.DriverManager

Connection 變數 = DriverManager.getConnection("jdbc:odbc:ODBC的名稱","帳號","密碼");

 

//註解:第二,執行SQL指令。執行SELECT指令,將資料放入記錄集(rs

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("select * from test");

 

//註解:第三,自由發揮

while( rs.next() )    //利用while迴圈,將所有資料呈現在畫面上。

{

    String my_id = rs.getString("id");

    Date my_time = rs.getDate("test_time");

    String my_title = rs.getString("title");

 

    out.println(my_time + "  " + my_title);

}

 

//註解:第四,關閉資源

rs.close();

stmt.close();

conn.close();

%>

 

 

 

以下是 PHP 4.x版的範例:

<?php

    //註解:第一,連結資料庫

    $link = mssql_connect("localhost", "test", "test");

    mssql_select_db("test", $link);

 

    //註解:第二,執行SQL指令。

    $SQL = "Select id,test_time,title from test";

    $RS = mssql_query($SQL, $link);

 

    //註解:第三,自由發揮

    if (!$RS)

     {

      echo "抱歉!資料庫沒有資料!";

     }

    else

     {

 

       while( list($id,$test_time,$title) = mssql_fetch_row($RS) )

       {

          echo "$test_time";

          echo "$title";

       }

     }

 

    //註解:第四,關閉資源

    mssql_free_result($RS);

    mssql_close ($link);

?>

 

以上三個程式都是相同的功能,就連撰寫的流程也大同小異。可見我一開始說的「連結資料庫的四大步驟」所言不虛。只要熟記這四大步驟,大部分的網頁程式設計都可以快速地轉換。

以我為例,我學習JSP只花了一天半的時間,用一天看書,另外半天是把我的程式改寫成JSP版本。而PHP也一樣,除了安裝PHP運作的環境(Apache Web Server搭配PHP)花了比較多時間之外,寫PHP程式對我來說幾乎沒有難度。

 

有了上面幾支程式的佐證,我們可以更深入瞭解四大步驟做了哪些事:

第一, 連接資料庫。
要連接各種資料庫,只要會撰寫連接字串(Connection String)即可。例如:"server=資料庫主機; uid=帳號; pwd=密碼; database=資料庫名稱" 。

第二, 執行SQL指令。
1.  SQL指令又分成兩種,一種是「Select」陳述句,用來撈(取出)資料。
2.  另外一種是資料的更動,例如「Insert、Update、Delete」陳述句,執行這類的陳述句將不會將大批資料傳回,頂多只有傳回一個數值,提醒我們這個陳述句更動了幾列資料而已。

第三, 自由發揮。
1.  如果是執行「Select」陳述句,把許多筆記錄從資料庫裡面撈出來,這時候就要呈現在畫面上。可能會用HTML碼作一些修飾,讓畫面比較整齊好看。
2.  如果是「Insert、Update、Delete」陳述句的話,只會傳回一個數值,提醒我們這個陳述句更動了幾列資料而已,告訴使用者這段動作是否成功完成。

第四, 關閉資料庫的連接與釋放資源。
俗諺有云:「有借有還,再借不難」。相同的道理,我們寫程式的時候,曾經使用過或開啟的資源,在程式的最後都要一一的關閉它。這樣才不會把系統資源消耗殆盡,被一支爛程式拖累整個系統。

 

 

以下是廣告文----

我的書上市了,煩請賞光、支持一下。   感恩~

ASP.NET 4.0 專題實務(松崗出版),本書有VB、C#兩種版本!

 

本系列 ADO.NET 共有下面文章:

範例:

 

 

 

 

 

 

今日值班正妹,吉澤明步(日本 成人愛情動作悲喜劇 的 專業女優

圖片來源:http://www.nutopia.uni.cc/~wkso/forum/viewtopic.php?t=19578&girl=photo&&simp=1

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程教學,遠距教學 (Web Form 約 51hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程教學,遠距教學 (ASP.NET MVC 約 140hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.tw  或  school (at) mis2000lab.net

 (1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A 

 (2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I 

[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm  。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b  


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

.........   facebook社團   https://www.facebook.com/mis2000lab   ......................

.........  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)。

...................................................................................................................................................... 

ASP.NET MVC  => .NET Core MVC 線上教學  ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講   事先錄好的影片,並非上課側錄!   觀看時,有如「一對一」面對面講課