Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 13 章 ADO.NET 建立網頁資料庫 13-1 網頁資料庫的基礎13-1 網頁資料庫的基礎 13-2 建立資料庫連接13-2 建立資料庫連接 13-3 ADO.NET 的 DataReader 物件13-3 ADO.NET 的 DataReader 物件.

Similar presentations


Presentation on theme: "第 13 章 ADO.NET 建立網頁資料庫 13-1 網頁資料庫的基礎13-1 網頁資料庫的基礎 13-2 建立資料庫連接13-2 建立資料庫連接 13-3 ADO.NET 的 DataReader 物件13-3 ADO.NET 的 DataReader 物件."— Presentation transcript:

1 第 13 章 ADO.NET 建立網頁資料庫 13-1 網頁資料庫的基礎13-1 網頁資料庫的基礎 13-2 建立資料庫連接13-2 建立資料庫連接 13-3 ADO.NET 的 DataReader 物件13-3 ADO.NET 的 DataReader 物件

2 13-1 網頁資料庫的基礎 13-1-1 資料庫系統13-1-1 資料庫系統 13-1-2 ASP.NET 與資料庫13-1-2 ASP.NET 與資料庫 13-1-3 ADO.NET 的簡介13-1-3 ADO.NET 的簡介 13-1-4 如何建立 ASP.NET13-1-4 如何建立 ASP.NET 網頁資料庫 網頁資料庫

3 13-1-1 資料庫系統 - 說明 資料庫系統本身就是一套應用程式, 目前的主流是關聯式資料庫系統,例 如: Access 、 MySQL 、 SQL Server 和 Oracle 等。 資料庫系統本身就是一套應用程式, 目前的主流是關聯式資料庫系統,例 如: Access 、 MySQL 、 SQL Server 和 Oracle 等。 可以使用 SQL 資料庫語言來儲存和管 理所需資料。 可以使用 SQL 資料庫語言來儲存和管 理所需資料。

4 13-1-1 資料庫系統 - 資料庫的組成: 資料表、記錄與欄位 1

5 13-1-1 資料庫系統 - 資料庫的組成: 資料表、記錄與欄位 2 資料表可以使用「索引」( Index )將資料 系統化的整理,以便在大量資料中快速找 到所需的資料或進行排序。 資料表可以使用「索引」( Index )將資料 系統化的整理,以便在大量資料中快速找 到所需的資料或進行排序。 例如:在通訊錄資料表使用編號欄位建立 主索引鍵,或稱為「主鍵」( Primary Key ), 如此就可以透過編號來加速資料表記錄的 搜尋和排序。 例如:在通訊錄資料表使用編號欄位建立 主索引鍵,或稱為「主鍵」( Primary Key ), 如此就可以透過編號來加速資料表記錄的 搜尋和排序。

6 13-1-2 ASP.NET 與資料庫 網頁資料庫是一種結合前端 HTML 文件或 Web 表單 的使用介面,配合後端 Web 伺服器和資料庫系統 的一種應用程式架構,如下圖所示: 網頁資料庫是一種結合前端 HTML 文件或 Web 表單 的使用介面,配合後端 Web 伺服器和資料庫系統 的一種應用程式架構,如下圖所示:

7 13-1-3 ADO.NET 的簡介 ADO.NET 是是「 ADO 」( ActiveX Data Object )元件的後繼者,其主要目的是 在.NET Framework 平台存取資料。ADO.NET 是是「 ADO 」( ActiveX Data Object )元件的後繼者,其主要目的是 在.NET Framework 平台存取資料。 以 ASP.NET 來說, ADO.NET 的主要功能是 存取資料庫,所以 ASP.NET 使用 ADO.NET , 一般來說都是為了建立網頁資料庫。 以 ASP.NET 來說, ADO.NET 的主要功能是 存取資料庫,所以 ASP.NET 使用 ADO.NET , 一般來說都是為了建立網頁資料庫。

8 13-1-4 如何建立 ASP.NET 網頁資料庫 ASP.NET 配合 ADO.NET 建立網頁資料庫的 步驟,如下所示:ASP.NET 配合 ADO.NET 建立網頁資料庫的 步驟,如下所示: – 建立資料庫 – 建立資料庫連接:使用 ADO.NET 的 OLE DB 提 供者來建立資料庫連接。 – 存取資料庫:使用 ADO.NET 的 DataReader 或 DataSet 來存取資料庫的記錄資料。 – 執行網頁資料庫:啟動瀏覽程式執行 ASP.NET 程式,以便測試網頁資料庫的執行結果。

9 13-2 建立資料庫連接 13-2-1 ADO.NET 的名稱空間13-2-1 ADO.NET 的名稱空間 13-2-2 建立 Connection 物件13-2-2 建立 Connection 物件

10 13-2-1 ADO.NET 的名稱空間 ASP.NET 程式需要匯入指定的名稱空間,才能使 用 ADO.NET 類別來存取資料庫。ASP.NET 程式需要匯入指定的名稱空間,才能使 用 ADO.NET 類別來存取資料庫。

11 13-2-2 建立 Connection 物件 - 說明 Connection 物件可以建立 ASP.NET 程式與存 取資料來源的連結和初始資料庫。Connection 物件可以建立 ASP.NET 程式與存 取資料來源的連結和初始資料庫。 Connection 物件有兩種:Connection 物件有兩種: –OLE DB 是使用 OleDbConnection 物件。 –SQL Server 是使用 SqlConnection 物件。

12 13-2-2 建立 Connection 物件 - 匯入名 稱空間 在 ASP.NET 程式需要匯入所需名稱空間,才能使用 ADO.NET 的類別和物件,如下所示: 在 ASP.NET 程式需要匯入所需名稱空間,才能使用 ADO.NET 的類別和物件,如下所示: SQL Server 與 SQL Server Express 匯入的名稱空間:SQL Server 與 SQL Server Express 匯入的名稱空間:

13 13-2-2 建立 Connection 物件 - 步驟一:建立 Connection 物件 1 在 ASP.NET 程式建立 Connection 物件,就是宣告和 建立 OleDbConnection 物件變數 objCon ,如下所示: 在 ASP.NET 程式建立 Connection 物件,就是宣告和 建立 OleDbConnection 物件變數 objCon ,如下所示: OleDbConnection objCon = new OleDbConnection(strDbCon); new OleDbConnection(strDbCon); 程式碼使用 new 運算子建立名為 objCon 的 OleDbConnection 物件, strDbCon 變數是資料來源 字串,如下所示: 程式碼使用 new 運算子建立名為 objCon 的 OleDbConnection 物件, strDbCon 變數是資料來源 字串,如下所示: string strDbCon="Provider=Microsoft.Jet.OLEDB.4.0; “ + "Data Source=" + Server.MapPath("iPods.mdb"); + "Data Source=" + Server.MapPath("iPods.mdb");

14 13-2-2 建立 Connection 物件 - 步驟一:建立 Connection 物件 2 連接 SQL Server 與 SQL Server Express 資料庫的 SqlConnection 物件,如下所示: 連接 SQL Server 與 SQL Server Express 資料庫的 SqlConnection 物件,如下所示: strDbCon = "server=localhost;database=iPods;uid=sa;pwd=1234"; SqlConnection objCon = new SqlConnection(strDbCon); 另一種寫法,如下所示: 另一種寫法,如下所示: strDbCon="user id=sa;password=1234; ;" + "initial catalog=iPods;" + "data source=localhost"; "initial catalog=iPods;" + "data source=localhost";

15 13-2-2 建立 Connection 物件 - 步驟一:建立 Connection 物件 3 至於 SQL Server 2005 Express 的連接字串,如下所 示: 至於 SQL Server 2005 Express 的連接字串,如下所 示: strDbCon="Data Source=.\SQLEXPRESS;AttachDbFilename=" + Server.MapPath("iPods.mdf") + Server.MapPath("iPods.mdf") + ";Integrated Security=True;" + ";Integrated Security=True;" + "TrustServerCertificate=False;" + "TrustServerCertificate=False;" + "User Instance=True;Context Connection=False"; "User Instance=True;Context Connection=False"; 上述連接字串的 Data Source 屬性是.\SQLEXPRESS , AttachDbFilename 屬性是資料庫名稱,副檔名 是.mdf 。 上述連接字串的 Data Source 屬性是.\SQLEXPRESS , AttachDbFilename 屬性是資料庫名稱,副檔名 是.mdf 。

16 13-2-2 建立 Connection 物件 - 步驟二:開啟資料庫連接 在建立好 Connection 物件後,就可以使用 Open() 方法開啟資料庫連接,如下所示; 在建立好 Connection 物件後,就可以使用 Open() 方法開啟資料庫連接,如下所示;objCon.Open(); 上述程式碼使用名為 objCon 的 Connection 物 件來開啟資料庫連接。 上述程式碼使用名為 objCon 的 Connection 物 件來開啟資料庫連接。

17 13-2-2 建立 Connection 物件 - 步驟三:資料庫操作與查詢 在建立好 Connection 資料庫連接物件後,就 可以使用 State 屬性檢查目前資料庫的連接狀 態,如下所示: 在建立好 Connection 資料庫連接物件後,就 可以使用 State 屬性檢查目前資料庫的連接狀 態,如下所示: if (objCon.State == ConnectionState.Open) { Response.Write(" 目前為開啟狀態 "); Response.Write(" 目前為開啟狀態 ");} else { Response.Write(" 目前為關閉狀態 "); Response.Write(" 目前為關閉狀態 ");}

18 13-2-2 建立 Connection 物件 - 步驟四:關閉資料庫連接 在完成資料庫操作後,請使用 Connection 物 件的 Close() 方法關閉資料庫連接。以 Connection 物件 objCon 為例,如下所示: 在完成資料庫操作後,請使用 Connection 物 件的 Close() 方法關閉資料庫連接。以 Connection 物件 objCon 為例,如下所示:objCon.Close();

19 13-3 ADO.NET 的 DataReader 物件 13-3-1 Command 與 DataReader 物件13-3-1 Command 與 DataReader 物件 13-3-2 開啟 DataReader 物件13-3-2 開啟 DataReader 物件 13-3-3 取得記錄的欄位名稱與值13-3-3 取得記錄的欄位名稱與值 13-3-4 使用表格顯示資料表13-3-4 使用表格顯示資料表

20 13-3 ADO.NET 的 DataReader 物件 ASP.NET 網頁資料庫就是使用 ADO.NET 的 DataReader 或 DataSet 物件來取得記錄資料,本節將 說明如何用 Command 物件執行 SQL 指令來取得 DataReader 物件的資料表記錄。ASP.NET 網頁資料庫就是使用 ADO.NET 的 DataReader 或 DataSet 物件來取得記錄資料,本節將 說明如何用 Command 物件執行 SQL 指令來取得 DataReader 物件的資料表記錄。

21 13-3-1 Command 與 DataReader 物件 - Command 物件 Command 物件可以針對資料來源執行 SQL 指令,我們 可以使用 Command 物件送出 SQL 指令來新增、刪除、 更新和查詢資料表的記錄。Command 物件可以針對資料來源執行 SQL 指令,我們 可以使用 Command 物件送出 SQL 指令來新增、刪除、 更新和查詢資料表的記錄。 ASP.NET 程式需要先使用 Connection 物件建立和開啟 資料庫連接後,才能使用 Command 物件執行 SQL 指令。ASP.NET 程式需要先使用 Connection 物件建立和開啟 資料庫連接後,才能使用 Command 物件執行 SQL 指令。 Command 物件分為兩種Command 物件分為兩種 –OLE DB 使用 OleDbCommand 物件 –SQL Server 使用 SqlCommand 物件。

22 13-3-1 Command 與 DataReader 物件 - DataReader 物件 DataReader 物件是執行 SQL 指令傳回的記錄資料,這是 「唯讀」( Read-Only )和「只能向前」( Forward-Only ) 的串流資料。因其每次只會從資料來源讀取一列資料(即 一筆)儲存到記憶體,所以讀取資料的執行效率非常高。DataReader 物件是執行 SQL 指令傳回的記錄資料,這是 「唯讀」( Read-Only )和「只能向前」( Forward-Only ) 的串流資料。因其每次只會從資料來源讀取一列資料(即 一筆)儲存到記憶體,所以讀取資料的執行效率非常高。 DataReader 物件也分為兩種DataReader 物件也分為兩種 –OLE DB 使用 OleDbDataReader 物件 –SQL Server 使用 SqlDataReader 物件

23 13-3-2 開啟 DataReader 物件 - 步驟一:開啟 Connection 物件的資料庫連接 ASP.NET 程式建立 DataReader 物件需要使用 Connection 物件開啟資料庫連接:ASP.NET 程式建立 DataReader 物件需要使用 Connection 物件開啟資料庫連接: OleDbConnection objCon = new OleDbConnection(strDbCon); new OleDbConnection(strDbCon);objCon.Open(); 上述程式碼建立 objCon 的 Connection 物件後,使用 Open() 方法開啟資料庫連接。 上述程式碼建立 objCon 的 Connection 物件後,使用 Open() 方法開啟資料庫連接。

24 13-3-2 開啟 DataReader 物件 - 步驟二:建立 Command 物件 在建立好 Connection 物件後,就可以使用 SQL 指令 和 Connection 物件作為參數來建立 Command 物件, 如下所示: 在建立好 Connection 物件後,就可以使用 SQL 指令 和 Connection 物件作為參數來建立 Command 物件, 如下所示: string strSQL = "SELECT * FROM iPod"; OleDbCommand objCmd = new OleDbCommand(strSQL, objCon); new OleDbCommand(strSQL, objCon); 上述程式碼使用 new 運算子建立 Command 物件, 第 2 個參數是開啟的 Connection 物件,表示向此資 料來源執行第 1 個參數的 SQL 指令。 上述程式碼使用 new 運算子建立 Command 物件, 第 2 個參數是開啟的 Connection 物件,表示向此資 料來源執行第 1 個參數的 SQL 指令。

25 13-3-2 開啟 DataReader 物件 - 步驟三:執行 SQL 指令查詢資料表 接著使用 Command 物件的 ExecuteReader() 方法執行 SQL 查詢指令,如下所示: 接著使用 Command 物件的 ExecuteReader() 方法執行 SQL 查詢指令,如下所示: OleDbDataReader objDataReader = objCmd.ExecuteReader(); objCmd.ExecuteReader(); 上述程式碼取得 DataReader 物件 objDataReader ,讀 者可以想像它是開啟一個資料庫的檔案串流。 上述程式碼取得 DataReader 物件 objDataReader ,讀 者可以想像它是開啟一個資料庫的檔案串流。

26 13-3-2 開啟 DataReader 物件 - 步驟四:檢查狀態或讀取記錄資料 DataReader 物件是一種資料串流,可以使用 IsClosed 屬性檢查 DataReader 串流是否已經開啟, 如下所示:DataReader 物件是一種資料串流,可以使用 IsClosed 屬性檢查 DataReader 串流是否已經開啟, 如下所示: if (objDataReader.IsClosed == false) { Response.Write(" DataReader 物件為開啟狀態 "); Response.Write(" DataReader 物件為開啟狀態 ");}else{ Response.Write(" DataReader 物件為關閉狀態 "); Response.Write(" DataReader 物件為關閉狀態 ");}

27 13-3-2 開啟 DataReader 物件 - 步驟五:關閉 DataReader 和資料庫連接 最後可以關閉 DataReader 串流物件和資料庫連接, 如下所示: 最後可以關閉 DataReader 串流物件和資料庫連接, 如下所示:objDataReader.Close();objCon.Close(); 上述程式碼使用 Close() 方法關閉 DataReader 和 Connection 物件。 上述程式碼使用 Close() 方法關閉 DataReader 和 Connection 物件。

28 13-3-3 取得記錄的欄位名稱與值 - 說 明 當 ASP.NET 程式使用 Command 物件的 ExecuteReader() 方法取得 DataReader 物件後,我們 可以將 DataReader 物件視為一種類似檔案的記錄串 流,在檔案中的每一列是一筆記錄,一次讀取一 筆記錄,如下圖所示: 當 ASP.NET 程式使用 Command 物件的 ExecuteReader() 方法取得 DataReader 物件後,我們 可以將 DataReader 物件視為一種類似檔案的記錄串 流,在檔案中的每一列是一筆記錄,一次讀取一 筆記錄,如下圖所示:

29 13-3-3 取得記錄的欄位名稱與值 - 讀 取記錄 在開啟 DataReader 物件後,記錄指標是指向 第 1 筆記錄之前,程式可以使用 Read() 方法 讀取下一筆記錄,如下所示: 在開啟 DataReader 物件後,記錄指標是指向 第 1 筆記錄之前,程式可以使用 Read() 方法 讀取下一筆記錄,如下所示:objDataReader.Read(); 上述程式碼執行 Read() 方法,換句話說,目 前記錄指標就會移到下一筆,指向第 1 筆記 錄,即 MA146LL 。 上述程式碼執行 Read() 方法,換句話說,目 前記錄指標就會移到下一筆,指向第 1 筆記 錄,即 MA146LL 。

30 13-3-3 取得記錄的欄位名稱與值 - 相 關方法 現在我們可以使用欄位定義資料的原始順序來取 得欄位值、檢查欄位值是否存在或欄位的資料類 型。其相關方法如下表所示: 現在我們可以使用欄位定義資料的原始順序來取 得欄位值、檢查欄位值是否存在或欄位的資料類 型。其相關方法如下表所示:

31 13-3-4 使用表格顯示資料表 - 說明 ASP.NET 程式可以使用表格,一列代表一 筆記錄,每一欄為一個欄位來顯示資料表 的記錄資料,程式是使用 HTML/XHTML 表 格標籤來顯示資料表。ASP.NET 程式可以使用表格,一列代表一 筆記錄,每一欄為一個欄位來顯示資料表 的記錄資料,程式是使用 HTML/XHTML 表 格標籤來顯示資料表。 亦可直接使用 DataGrid 控制項,以資料繫結 方式來顯示資料表的記錄資料。 亦可直接使用 DataGrid 控制項,以資料繫結 方式來顯示資料表的記錄資料。

32 13-3-4 使用表格顯示資料表 - 讀取 DataReader 物件如同串流物件, ASP.NET 程式可以 使用 while 迴圈來讀取資料表的記錄,如下所示:DataReader 物件如同串流物件, ASP.NET 程式可以 使用 while 迴圈來讀取資料表的記錄,如下所示: while (objDR.Read()) { Response.Write(" "); Response.Write(" "); Response.Write(" "+ objDR["ModelNo"] +" "); Response.Write(" "+ objDR["ModelNo"] +" "); Response.Write(" "+ objDR["Name"] + " "); Response.Write(" "+ objDR["Name"] + " "); Response.Write(" "+ objDR["Storage"] +" "); Response.Write(" "+ objDR["Storage"] +" "); Response.Write(" "+ objDR["Price"] + " "); Response.Write(" "+ objDR["Price"] + " "); Response.Write(" "+ objDR["StockDate"] + " "); Response.Write(" "+ objDR["StockDate"] + " "); Response.Write(" "); Response.Write(" ");}

33 13-3-4 使用表格顯示資料表 - 取得欄位 DataReader 物件是一個集合物件,可以使用欄位名 稱或欄位順序來取得欄位值,如下所示:DataReader 物件是一個集合物件,可以使用欄位名 稱或欄位順序來取得欄位值,如下所示: Response.Write(" "+ objDR["Name"] + " "); Response.Write(" " + objDR[1] + " "); 程式碼的字串 Name 是欄位名稱,數值 1 是欄位 Name 的原始順序,取得資料的型態是資料庫欄位 的資料類型,以此例為 string 字串,如果是 Price 欄 位就是 decimal 資料型態。 程式碼的字串 Name 是欄位名稱,數值 1 是欄位 Name 的原始順序,取得資料的型態是資料庫欄位 的資料類型,以此例為 string 字串,如果是 Price 欄 位就是 decimal 資料型態。

34 完整範例 <html> 使用表格顯示資料表 使用表格顯示資料表 <body> 型號 名稱 容量 型號 名稱 容量 價格 進貨日期 價格 進貨日期 <% // OLEDB 提供者字串 string strDbCon = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath("iPods.mdb"); "Data Source=" + Server.MapPath("iPods.mdb"); // 建立 Connection 物件 OleDbConnection objCon = new OleDbConnection(strDbCon); objCon.Open(); // 開啟資料庫連接 string strSQL = "SELECT * FROM iPod"; // 建立 Command 物件的 SQL 指令 OleDbCommand objCmd = new OleDbCommand(strSQL, objCon); // 取得 DataReader 物件 OleDbDataReader objDR = objCmd.ExecuteReader(); // 顯示資料表的記錄 while (objDR.Read()) { Response.Write(" "); Response.Write(" "); Response.Write(" "+ objDR["ModelNo"] +" "); Response.Write(" "+ objDR["ModelNo"] +" "); Response.Write(" "+ objDR["Name"] + " "); Response.Write(" "+ objDR["Name"] + " "); Response.Write(" "+ objDR["Storage"] +" "); Response.Write(" "+ objDR["Storage"] +" "); Response.Write(" "+ objDR["Price"] + " "); Response.Write(" "+ objDR["Price"] + " "); Response.Write(" "+ objDR["StockDate"] + " "); Response.Write(" "+ objDR["StockDate"] + " "); Response.Write(" "); Response.Write(" ");} objDR.Close(); // 關閉 DataReader objCon.Close(); // 關閉資料庫連接 %></table></body></html>

35 13-6 ASP.NET 控制項與資料繫結 13-6-1 ASP.NET 資料繫結的基礎13-6-1 ASP.NET 資料繫結的基礎 補充 : GridView 控制項的資料繫結 補充 : GridView 控制項的資料繫結

36 13-6-1 ASP.NET 資料繫結的基礎 - 說明 ASP.NET 的 Web 控制項支援資料繫結技術,可以 將不同資料來源的集合物件、陣列、 DataReader 或 DataView 物件整合到 ASP.NET 的 Web 控制項。ASP.NET 的 Web 控制項支援資料繫結技術,可以 將不同資料來源的集合物件、陣列、 DataReader 或 DataView 物件整合到 ASP.NET 的 Web 控制項。 不過,並非每一個 Web 控制項都支援資料繫結技 術,只有擁有 DataSource 屬性的 Web 控制項才支援 資料繫結。 不過,並非每一個 Web 控制項都支援資料繫結技 術,只有擁有 DataSource 屬性的 Web 控制項才支援 資料繫結。

37 13-6-1 ASP.NET 資料繫結的基礎 - 步驟 在 ASP.NET 程式的 Web 控制項使用資料繫結 的步驟,如下所示: 在 ASP.NET 程式的 Web 控制項使用資料繫結 的步驟,如下所示: –Step 1 :定義資料來源和取得資料來源的資料物 件。 –Step 2 :指定控制項的 DataSource 屬性為此資料 來源的資料物件,以資料庫來說就是 DataReader 等物件。 –Step 3 :執行控制項的 DataBind() 方法建立資料 連結。

38 補充 : GridView 控制項的資料繫結 GridView1.DataSource = objCmd.ExecuteReader(); GridView1.DataBind();


Download ppt "第 13 章 ADO.NET 建立網頁資料庫 13-1 網頁資料庫的基礎13-1 網頁資料庫的基礎 13-2 建立資料庫連接13-2 建立資料庫連接 13-3 ADO.NET 的 DataReader 物件13-3 ADO.NET 的 DataReader 物件."

Similar presentations


Ads by Google