Presentation is loading. Please wait.

Presentation is loading. Please wait.

第 8 章 ADO.NET 的網頁資料庫操 作 8-1 網頁資料庫的基礎 8-1 網頁資料庫的基礎 8-2 建立資料庫與新增 ODBC 8-2 建立資料庫與新增 ODBC 8-3 ADO.NET 的基礎 8-3 ADO.NET 的基礎 8-4 SQL 指令的資料庫操作 8-4 SQL 指令的資料庫操作.

Similar presentations


Presentation on theme: "第 8 章 ADO.NET 的網頁資料庫操 作 8-1 網頁資料庫的基礎 8-1 網頁資料庫的基礎 8-2 建立資料庫與新增 ODBC 8-2 建立資料庫與新增 ODBC 8-3 ADO.NET 的基礎 8-3 ADO.NET 的基礎 8-4 SQL 指令的資料庫操作 8-4 SQL 指令的資料庫操作."— Presentation transcript:

1 第 8 章 ADO.NET 的網頁資料庫操 作 8-1 網頁資料庫的基礎 8-1 網頁資料庫的基礎 8-2 建立資料庫與新增 ODBC 8-2 建立資料庫與新增 ODBC 8-3 ADO.NET 的基礎 8-3 ADO.NET 的基礎 8-4 SQL 指令的資料庫操作 8-4 SQL 指令的資料庫操作 8-5 DataSet 的資料庫操作 8-5 DataSet 的資料庫操作 8-6 使用參數 SQL 指令的資料庫操作 8-6 使用參數 SQL 指令的資料庫操作

2 8-1 網頁資料庫的基礎 8-1-1 資料庫系統 8-1-1 資料庫系統 8-1-2 建立網頁資料庫 8-1-2 建立網頁資料庫

3 8-1-1 資料庫系統 在電腦計算機科學的應用領域,「資料庫」 ( Database )才是公司行號或家庭電腦化的推 手,眾多的出勤管理系統、倉庫管理系統、進銷 存系統或小至錄影帶店管理系統,都屬於不同應 用的資料庫系統。 在電腦計算機科學的應用領域,「資料庫」 ( Database )才是公司行號或家庭電腦化的推 手,眾多的出勤管理系統、倉庫管理系統、進銷 存系統或小至錄影帶店管理系統,都屬於不同應 用的資料庫系統。 資料庫系統本身是一套應用程式,例如: Access 、 MySQL 、 SQL Server 和 Oracle 等,資料庫使用 者可以使用 SQL 資料庫語言來儲存和管理所需的 資料,事實上,只有複雜的應用系統,程式開發 者才需替客戶量身定作所需的資料庫系統。 資料庫系統本身是一套應用程式,例如: Access 、 MySQL 、 SQL Server 和 Oracle 等,資料庫使用 者可以使用 SQL 資料庫語言來儲存和管理所需的 資料,事實上,只有複雜的應用系統,程式開發 者才需替客戶量身定作所需的資料庫系統。

4 8-1-2 建立網頁資料庫 - 說明 網頁資料庫是使用資料庫作為網頁內容的 資料來源,它是結合 Web 伺服器和資料庫 系統的一種應用程式架構,如下圖所示: 網頁資料庫是使用資料庫作為網頁內容的 資料來源,它是結合 Web 伺服器和資料庫 系統的一種應用程式架構,如下圖所示:

5 8-1-2 建立網頁資料庫 - 步驟 ASP.NET 技術建立網頁資料庫的步驟,如 下所示: ASP.NET 技術建立網頁資料庫的步驟,如 下所示: Step 1 :建立網頁內容所需的資料庫,即 Access 資料庫檔案.mdb ,或 SQL Server 資 料庫。Step 1 :建立網頁內容所需的資料庫,即 Access 資料庫檔案.mdb ,或 SQL Server 資 料庫。 Step 2 :新增伺服器的 ODBC 資料來源或使用 OLEDB 或 SQL Server 的「提供者」 ( Managed Providers )來連結資料庫。Step 2 :新增伺服器的 ODBC 資料來源或使用 OLEDB 或 SQL Server 的「提供者」 ( Managed Providers )來連結資料庫。 Step 3 :撰寫 ASP.NET 程式,使用 ADO.NET 存取資料庫記錄來產生網頁內容。Step 3 :撰寫 ASP.NET 程式,使用 ADO.NET 存取資料庫記錄來產生網頁內容。 Step 4 :啟動瀏覽程式執行與測試 ASP.NET 程式執行結果。Step 4 :啟動瀏覽程式執行與測試 ASP.NET 程式執行結果。

6 8-2 建立資料庫與新增 ODBC 8-2-1 建立資料庫 8-2-1 建立資料庫 8-2-2 新增 ODBC 系統資料來源 8-2-2 新增 ODBC 系統資料來源

7 8-2-1 建立資料庫 - 建立 Access 資料 庫 Access 資料庫 Users.mdb 擁有 Users 資料 表,欄位說明如下表所示: Access 資料庫 Users.mdb 擁有 Users 資料 表,欄位說明如下表所示:

8 8-2-1 建立資料庫 - 建立 SQL Server 2005 Express 資料庫 在安裝 Visual Web Developer 同時也安裝 SQL Server 2005 Express ,在 VWD 提供相關介 面,可以幫助我們 建立 SQL Server 資料庫。 在安裝 Visual Web Developer 同時也安裝 SQL Server 2005 Express ,在 VWD 提供相關介 面,可以幫助我們 建立 SQL Server 資料庫。

9 8-2-2 新增 ODBC 系統資料來源 ASP.NET 程式如果使用 ODBC 建立資料庫連結, 在 Web 伺服器電腦需要新增「 ODBC 」( Open DataBase Connectivity )系統資料來源「 DSN 」 ( Data Source Name ),如下圖: ASP.NET 程式如果使用 ODBC 建立資料庫連結, 在 Web 伺服器電腦需要新增「 ODBC 」( Open DataBase Connectivity )系統資料來源「 DSN 」 ( Data Source Name ),如下圖:

10 8-3 ADO.NET 的基礎 8-3-1 什麼是 ADO.NET 8-3-1 什麼是 ADO.NET 8-3-2 ADO.NET 物件模型 8-3-2 ADO.NET 物件模型

11 8-3-1 什麼是 ADO.NET- 說明 ADO.NET 是微軟新一代技術,它是「 ADO 」 ( ActiveX Data Object )元件的後繼者,目前 版本是 2.0 版。其主要目的是在.NET Framework 平台存取資料,簡單的說, ASP.NET 是使用 ADO.NET 來進行資料庫存取。 ADO.NET 是微軟新一代技術,它是「 ADO 」 ( ActiveX Data Object )元件的後繼者,目前 版本是 2.0 版。其主要目的是在.NET Framework 平台存取資料,簡單的說, ASP.NET 是使用 ADO.NET 來進行資料庫存取。 ADO.NET 的目的是提供一致的物件模型,可以存 取和編輯資料來源的資料,換句話說,就是提供 一致的資料處理方式,至於資料來源並不限資料 庫,幾乎任何資料來源都可以。以 ASP.NET 的應 用來說, ADO.NET 的主要功能是存取資料庫,所 以 ASP.NET 使用 ADO.NET ,一般來說都是為了 建立網頁資料庫。 ADO.NET 的目的是提供一致的物件模型,可以存 取和編輯資料來源的資料,換句話說,就是提供 一致的資料處理方式,至於資料來源並不限資料 庫,幾乎任何資料來源都可以。以 ASP.NET 的應 用來說, ADO.NET 的主要功能是存取資料庫,所 以 ASP.NET 使用 ADO.NET ,一般來說都是為了 建立網頁資料庫。

12 8-3-1 什麼是 ADO.NET- 名稱空間 在 ASP.NET 程式需要匯入名稱空間來使用 ADO.NET 類別。主要名稱空間有 3 個,如 下表所示: 在 ASP.NET 程式需要匯入名稱空間來使用 ADO.NET 類別。主要名稱空間有 3 個,如 下表所示:

13 8-3-2 ADO.NET 物件模型 - 圖例 ADO.NET 主要類別物件有: Connection 、 Command 、 DataReader 和 DataSet ,其物件 模型如下圖所示: ADO.NET 主要類別物件有: Connection 、 Command 、 DataReader 和 DataSet ,其物件 模型如下圖所示:

14 8-3-2 ADO.NET 物件模型 - Connection 物件 Connection 物件可以建立與資料來源間的連結, 以資料庫來說, Connection 物件還負責初始資料 庫。 Connection 物件有兩種: OLE DB 是使用 OleDbConnection 物件, SQL Server 是使用 SqlConnection 物件。 Connection 物件可以建立與資料來源間的連結, 以資料庫來說, Connection 物件還負責初始資料 庫。 Connection 物件有兩種: OLE DB 是使用 OleDbConnection 物件, SQL Server 是使用 SqlConnection 物件。 換個角度來說, Web 伺服器和資料庫系統間本來 沒有任何關係,屬於兩套不同的應用程式,透過 ODBC 或 OLE DB 可以開啟資料來源的資料庫, Connection 物件進一步將 ASP.NET 程式和資料 庫連結起來。 換個角度來說, Web 伺服器和資料庫系統間本來 沒有任何關係,屬於兩套不同的應用程式,透過 ODBC 或 OLE DB 可以開啟資料來源的資料庫, Connection 物件進一步將 ASP.NET 程式和資料 庫連結起來。

15 8-3-2 ADO.NET 物件模型 - Command 物件 Command 物件可以對資料來源執行指令, 以資料庫來說,就是執行 SQL 指令。 ASP.NET 程式可以使用 Command 物件送 出 SQL 指令來新增、刪除、更新和查詢資 料表的記錄。 Command 物件可以對資料來源執行指令, 以資料庫來說,就是執行 SQL 指令。 ASP.NET 程式可以使用 Command 物件送 出 SQL 指令來新增、刪除、更新和查詢資 料表的記錄。 在 ASP.NET 程式需要先使用 Connection 物 件建立資料庫連結後,才能使用 Command 物件執行 SQL 指令, Command 物件分為兩種: OLE DB 是使用 OleDbCommand 物件, SQL Server 是使 用 SqlCommand 物件。 在 ASP.NET 程式需要先使用 Connection 物 件建立資料庫連結後,才能使用 Command 物件執行 SQL 指令, Command 物件分為兩種: OLE DB 是使用 OleDbCommand 物件, SQL Server 是使 用 SqlCommand 物件。

16 8-3-2 ADO.NET 物件模型 - DataReader 物件 ADO.NET 的 DataReader 物件可以從資料 來源使用 Command 物件執行指令,取得 「唯讀」( Read-Only )和「只能向前」 ( Forward-Only )的串流資料,每次只能 從資料來源讀取一列資料(即一筆)儲存 到記憶體,所以執行效率非常高。 ADO.NET 的 DataReader 物件可以從資料 來源使用 Command 物件執行指令,取得 「唯讀」( Read-Only )和「只能向前」 ( Forward-Only )的串流資料,每次只能 從資料來源讀取一列資料(即一筆)儲存 到記憶體,所以執行效率非常高。 DataReader 物件分為兩種: OLE DB 是使 用 OleDbDataReader 物件, SQL Server 是使用 SqlDataReader 物件。 DataReader 物件分為兩種: OLE DB 是使 用 OleDbDataReader 物件, SQL Server 是使用 SqlDataReader 物件。

17 8-3-2 ADO.NET 物件模型 - DataSet 和 DataTable 物件 DataSet 物件是由 DataTable 物件組成的集合物 件, DataSet 物件可代表儲存在記憶體的資料庫, 每一個 DataTable 儲存一個資料表的記錄資料, 並且可以設定資料表間的關聯性 ( Relationship )。 DataSet 物件是由 DataTable 物件組成的集合物 件, DataSet 物件可代表儲存在記憶體的資料庫, 每一個 DataTable 儲存一個資料表的記錄資料, 並且可以設定資料表間的關聯性 ( Relationship )。 DataSet 和 DataTable 類別屬於 System.Data 名 稱空間,當 ASP.NET 程式需要將資料表的記錄資 料填入 DataTable 物件時,我們需要使用 DataAdapter 類別的方法 Fill() 將資料表的資料填 入 DataSet 物件。 DataSet 和 DataTable 類別屬於 System.Data 名 稱空間,當 ASP.NET 程式需要將資料表的記錄資 料填入 DataTable 物件時,我們需要使用 DataAdapter 類別的方法 Fill() 將資料表的資料填 入 DataSet 物件。

18 8-4 SQL 指令的資料庫操作 8-4-1 SQL 指令的資料庫操作 8-4-1 SQL 指令的資料庫操作 8-4-2 插入新記錄 8-4-2 插入新記錄 8-4-3 更新記錄 8-4-3 更新記錄 8-4-4 刪除記錄 8-4-4 刪除記錄

19 8-4-1 SQL 指令的資料庫操作 - 匯入名稱空間 在 ASP.NET 程式可以使用 ADO.NET 的 Command 物件來 執行 SQL 指令,程式是使用 Connection 物件來建立資料 庫連結。 ASP.NET 程式首先匯入所需的名稱空間,如下 所示: 在 ASP.NET 程式可以使用 ADO.NET 的 Command 物件來 執行 SQL 指令,程式是使用 Connection 物件來建立資料 庫連結。 ASP.NET 程式首先匯入所需的名稱空間,如下 所示: 上述名稱空間是使用在非 SQL Server 的資料庫系統 ( 7.0 以上的版本),例如: Access 或 Oracle 。 SQL Server 建議匯入的名稱空間,如下所示: 上述名稱空間是使用在非 SQL Server 的資料庫系統 ( 7.0 以上的版本),例如: Access 或 Oracle 。 SQL Server 建議匯入的名稱空間,如下所示:

20 8-4-1 SQL 指令的資料庫操作 - 步驟一:建立和開啟資料庫連結 ASP.NET 程式在匯入名稱空間後,就可以建立 Connection 物件,如下所示: ASP.NET 程式在匯入名稱空間後,就可以建立 Connection 物件,如下所示: objCon = New OleDbConnection(strDbCon) 上述程式碼建立名為 objCon 的 OleDbConnection 物件。 strDbCon 變數是資料 來源字串,如下所示: 上述程式碼建立名為 objCon 的 OleDbConnection 物件。 strDbCon 變數是資料 來源字串,如下所示: strDbCon="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & _ "Data Source=" & _ Server.Mappath("/Ch08/Users.mdb") Server.Mappath("/Ch08/Users.mdb")

21 8-4-1 SQL 指令的資料庫操作 - 步驟二:建立 Command 物件 在開啟資料庫連結後,就可以建立 Command 物件來指定欲執行的 SQL 指令 字串,如下所示: 在開啟資料庫連結後,就可以建立 Command 物件來指定欲執行的 SQL 指令 字串,如下所示: objCmd = New OleDbCommand( _ strSQL, objCon) strSQL, objCon)

22 8-4-1 SQL 指令的資料庫操作 - 步驟三:執行 SQL 指令處理資料庫 現在 ASP.NET 程式已經開啟資料庫連結和 建立 Command 物件,接著就可以使用 Command 物件的 ExecuteNonQuery() 方法來執行 SQL 指令,如下所示: 現在 ASP.NET 程式已經開啟資料庫連結和 建立 Command 物件,接著就可以使用 Command 物件的 ExecuteNonQuery() 方法來執行 SQL 指令,如下所示: count = objCmd.ExecuteNonQuery() 程式碼的變數 count 可以取得影響的記錄數, 此方法執行 SQL 指令並不會傳回記錄資料。 程式碼的變數 count 可以取得影響的記錄數, 此方法執行 SQL 指令並不會傳回記錄資料。

23 8-4-1 SQL 指令的資料庫操作 - 步驟四:關閉資料庫連結 在完成資料庫操作後,請記得使用 Connection 物件的 Close() 方法關閉資料 庫連結。以 Connection 物件 objCon 為例, 如下所示: 在完成資料庫操作後,請記得使用 Connection 物件的 Close() 方法關閉資料 庫連結。以 Connection 物件 objCon 為例, 如下所示:objCon.Close()

24 8-4-2 插入新記錄 -SQL 指令 在 ASP.NET 程式插入記錄,最重要的部分是建立 Command 物件執行的 SQL 指令,插入新記錄的 SQL 指令字串,如下所示: 在 ASP.NET 程式插入記錄,最重要的部分是建立 Command 物件執行的 SQL 指令,插入新記錄的 SQL 指令字串,如下所示: strSQL="INSERT INTO USERS (name,birthday," & _ "salary,email,username,userpassword) " "salary,email,username,userpassword) " strSQL = strSQL & "VALUES ('" & name.Text & "'," strSQL = strSQL & "#" & birthday.Text & "#," strSQL = strSQL & salary.Text & ",'" strSQL = strSQL & email.Text & "','" strSQL = strSQL & username.Text & "','" strSQL = strSQL & password.Text & "')"

25 8-4-2 插入新記錄 - 注意事項 不論欄位或值清單,都是使用逗號「, 」分隔。 不論欄位或值清單,都是使用逗號「, 」分隔。 在 VALUES 的欄位值中,數值不用單引號括起, 字元和日期 / 時間是使用單引號括起,如果是 Access 資料庫,日期 / 時間是使用「 # 」符號括起。 在 VALUES 的欄位值中,數值不用單引號括起, 字元和日期 / 時間是使用單引號括起,如果是 Access 資料庫,日期 / 時間是使用「 # 」符號括起。 欄位清單並不需要和資料表定義的欄位數目或順 序相同,只需列出欲插入欄位即可,不過,非 NULL 值欄位一定要列出,而且括號內的欄位順序 必須和 VALUES 值的順序相同。 欄位清單並不需要和資料表定義的欄位數目或順 序相同,只需列出欲插入欄位即可,不過,非 NULL 值欄位一定要列出,而且括號內的欄位順序 必須和 VALUES 值的順序相同。

26 8-4-3 更新記錄 -SQL 指令 在 ASP.NET 程式的 SQL 指令是以使用者帳 號作為更新記錄的條件,更新欄位是 UserPassword 和 Email , SQL 指令字串, 如下所示: 在 ASP.NET 程式的 SQL 指令是以使用者帳 號作為更新記錄的條件,更新欄位是 UserPassword 和 Email , SQL 指令字串, 如下所示: strSQL = "UPDATE USERS SET " strSQL &="UserPassword='" & _ password.Text & "', " password.Text & "', " strSQL &="Email='" & email.Text & "'" strSQL &=" WHERE UserName='" & _ username.Text & "'" username.Text & "'"

27 8-4-3 更新記錄 - 注意事項 WHERE 子句是必要元素,如果沒有條件, 資料表內所有記錄欄位都會更新。 WHERE 子句是必要元素,如果沒有條件, 資料表內所有記錄欄位都會更新。 對於更新欄位值,數值不用單引號括起, 字元和日期 / 時間是使用單引號括起,如果 是 Access 資料庫,日期 / 時間是使用「 # 」 符號括起。 對於更新欄位值,數值不用單引號括起, 字元和日期 / 時間是使用單引號括起,如果 是 Access 資料庫,日期 / 時間是使用「 # 」 符號括起。

28 8-4-4 刪除記錄 -SQL 指令 在 ASP.NET 程式建立 SQL 指令字串,就可 以使用 Command 物件執行 DELETE 指令來 刪除記錄資料,如下所示: 在 ASP.NET 程式建立 SQL 指令字串,就可 以使用 Command 物件執行 DELETE 指令來 刪除記錄資料,如下所示: strSQL = _ "DELETE FROM USERS WHERE UserName ='" & _ "DELETE FROM USERS WHERE UserName ='" & _ username.Text & "'" username.Text & "'"

29 8-4-4 刪除記錄 - 注意事項 WHERE 子句是必要元素,如果沒有此條件, 資料表內的所有記錄都會刪除掉。 WHERE 子句是必要元素,如果沒有此條件, 資料表內的所有記錄都會刪除掉。 WHERE 條件的比較運算子和 Visual Basic 2005 語法相類似,能夠使用 = 、 <> 、 > 、 = 。 WHERE 條件的比較運算子和 Visual Basic 2005 語法相類似,能夠使用 = 、 <> 、 > 、 = 。 WHERE 條件如果不只一個,需要使用邏輯 運算子來連結,如下表所示: WHERE 條件如果不只一個,需要使用邏輯 運算子來連結,如下表所示:

30 8-5 DataSet 的資料庫操作 8-5-1 DataSet 物件的資料庫操作 8-5-1 DataSet 物件的資料庫操作 8-5-2 插入新記錄 8-5-2 插入新記錄 8-5-3 更新記錄 8-5-3 更新記錄 8-5-4 刪除記錄 8-5-4 刪除記錄

31 8-5-1 DataSet 物件的資料庫操作 - 步驟一:建立 Connection 物件 ASP.NET 程式需要使用 Connection 物件來 建立資料庫連結,如下所示: ASP.NET 程式需要使用 Connection 物件來 建立資料庫連結,如下所示: objCon = New OleDbConnection(strDbCon) 上述程式碼建立 objCon 的資料庫連結物件。 上述程式碼建立 objCon 的資料庫連結物件。

32 8-5-1 DataSet 物件的資料庫操作 - 步驟二:建立 DataAdapter 和 CommandBuilder 物件 在 DataSet 物件是使用 DataAdapter 物件來取得 記錄資料,它是 DataSet 和 Connection 物件資料 來源間的橋樑,可以取得 DataSet 的記錄資料和 更新資料來源的記錄資料。 在 DataSet 物件是使用 DataAdapter 物件來取得 記錄資料,它是 DataSet 和 Connection 物件資料 來源間的橋樑,可以取得 DataSet 的記錄資料和 更新資料來源的記錄資料。 DataAdapter 類別也擁有 2 個版本, SQL Server 是 SqlDataAdapter ,以本節為例是使用 OLE DB 的 OleDbDataAdapter ,如下所示: DataAdapter 類別也擁有 2 個版本, SQL Server 是 SqlDataAdapter ,以本節為例是使用 OLE DB 的 OleDbDataAdapter ,如下所示: strSQL = "SELECT * FROM Users" objDataAdapter= _ New OleDbDataAdapter(strSQL,objCon) New OleDbDataAdapter(strSQL,objCon)

33 8-5-1 DataSet 物件的資料庫操作 - 步驟二:建立 DataAdapter 和 CommandBuilder 物件 DataAdapter 物件提供 4 個屬性 SelectCommand 、 InsertCommand 、 DeleteCommand 和 UpdateCommand ,可以 分別指定查詢、插入、刪除和更新 SQL 指令的 Command 物件,不過,我們並不用自行建立, 可以使用 CommandBuilder 物件來自動幫我們建 立 SQL 指令,如下所示: DataAdapter 物件提供 4 個屬性 SelectCommand 、 InsertCommand 、 DeleteCommand 和 UpdateCommand ,可以 分別指定查詢、插入、刪除和更新 SQL 指令的 Command 物件,不過,我們並不用自行建立, 可以使用 CommandBuilder 物件來自動幫我們建 立 SQL 指令,如下所示: Dim objCmdBuilder As OleDbCommandBuilder = _ New OleDbCommandBuilder(objDataAdapter) New OleDbCommandBuilder(objDataAdapter)

34 8-5-1 DataSet 物件的資料庫操作 - 步驟三:建立 DataSet 物件填入記錄資料 現在我們可以建立 DataSet 物件且執行 DataAdapter 的 SQL 查詢指令,將記錄資料填入 DataSet ,如下所示: 現在我們可以建立 DataSet 物件且執行 DataAdapter 的 SQL 查詢指令,將記錄資料填入 DataSet ,如下所示: objDataSet As DataSet = New DataSet() objDataAdapter.Fill(objDataSet, "Users") 上述程式碼建立 DataSet 物件後,使用 DataAdpater 物件的 Fill() 方法將 SQL 指令的查詢 結果,填入第 1 個參數的的 DataSet 物件。 上述程式碼建立 DataSet 物件後,使用 DataAdpater 物件的 Fill() 方法將 SQL 指令的查詢 結果,填入第 1 個參數的的 DataSet 物件。

35 8-5-1 DataSet 物件的資料庫操作 - 步驟四:在 DataTable 執行資料庫操作 DataSet 物件的每一個 DataTable 物件是 對應資料庫的一個資料表,當建立好 DataSet 物件填入記錄資料後,就可以在 DataTable 物件插入、刪除和更新列物件 DataRow ,這就是一筆記錄。 DataSet 物件的每一個 DataTable 物件是 對應資料庫的一個資料表,當建立好 DataSet 物件填入記錄資料後,就可以在 DataTable 物件插入、刪除和更新列物件 DataRow ,這就是一筆記錄。

36 8-5-1 DataSet 物件的資料庫操作 - 步驟五:更新資料表的記錄資料 在 DataTable 物件新增、更新或刪除 DataRow 物件後,因為操作是針對儲存在 記憶體的 DataSet 物件,最後我們還需要 更新資料來源的記錄資料,如下所示: 在 DataTable 物件新增、更新或刪除 DataRow 物件後,因為操作是針對儲存在 記憶體的 DataSet 物件,最後我們還需要 更新資料來源的記錄資料,如下所示: count = objDataAdapter.Update( _ objDataSet, "Users") objDataSet, "Users")

37 8-5-1 DataSet 物件的資料庫操作 - 步驟六:關閉資料庫連結 最後記得需要關閉資料庫連結,即使用 Connection 物件的 Close() 方法,如下所 示: 最後記得需要關閉資料庫連結,即使用 Connection 物件的 Close() 方法,如下所 示:objCon.Close()

38 8-5-2 插入新記錄 - 建立 DataRow 物件 DataSet 物件插入新記錄操作是針對 DataTable 物件,所謂插入記錄就是新增 DataRow 物件,如 下所示: DataSet 物件插入新記錄操作是針對 DataTable 物件,所謂插入記錄就是新增 DataRow 物件,如 下所示: Dim objDataRow As DataRow objDataRow = _ objDataSet.Tables("Users").NewRow() objDataSet.Tables("Users").NewRow() 接著輸入欄位值,如下所示: 接著輸入欄位值,如下所示: objDataRow("name") = name.Text objDataRow("birthday") = birthday.Text ………………… objDataRow("userpassword") = _ password.Text password.Text

39 8-5-2 插入新記錄 - 新增至 DataTable 物件 最後將 DataRow 物件新增到 DataTable 物 件,如下所示: 最後將 DataRow 物件新增到 DataTable 物 件,如下所示:objDataSet.Tables("Users").Rows.Add(objDataRow)

40 8-5-3 更新記錄 DataSet 物件的更新記錄操作,因為擁有更新條件,所以 需要使用迴路找尋欲更新記錄後,才能更新記錄資料,如 下所示: DataSet 物件的更新記錄操作,因為擁有更新條件,所以 需要使用迴路找尋欲更新記錄後,才能更新記錄資料,如 下所示: For Each objDataRow in _ objDataSet.Tables("Users").Rows objDataSet.Tables("Users").Rows If objDataRow("UserName") = _ If objDataRow("UserName") = _ username.Text Then username.Text Then objDataRow("UserPassword") = password.Text objDataRow("UserPassword") = password.Text objDataRow("Email") = email.Text objDataRow("Email") = email.Text End If End IfNext

41 8-5-4 刪除記錄 同樣方式,我們可以使用 DataSet 物件來 刪除資料表的記錄,如下所示: 同樣方式,我們可以使用 DataSet 物件來 刪除資料表的記錄,如下所示: For Each objDataRow in _ objDataSet.Tables("Users").Rows objDataSet.Tables("Users").Rows If objDataRow("UserName") = _ If objDataRow("UserName") = _ username.Text Then username.Text Then objDataRow.Delete() objDataRow.Delete() End If End IfNext

42 8-6 使用參數 SQL 指令的資料庫操作 - 參數的 SQL 指令字串 Command 物件如果需要新增 Parameter 物件的 參數,在 SQL 指令字串也需要新增參數,這是以 「@」符號開頭的字串名稱,如下所示: Command 物件如果需要新增 Parameter 物件的 參數,在 SQL 指令字串也需要新增參數,這是以 「@」符號開頭的字串名稱,如下所示: strSQL="INSERT INTO USERS (name,birthday," & _ "salary,email,username,userpassword) " "salary,email,username,userpassword) " strSQL &="VALUES ( @name, @birthday,@salary, " strSQL &="@email, @username, @password)" 上述 SQL 指令字串的 @name 、 @birthday 、 @salary 、 @email 、 @username 和 @password 就是參數。 上述 SQL 指令字串的 @name 、 @birthday 、 @salary 、 @email 、 @username 和 @password 就是參數。

43 8-6 使用參數 SQL 指令的資料庫操作 - 建立 Parameter 參數物件 接著我們可以使用參數的 SQL 指令字串來 建立 Command 物件,如下所示: 接著我們可以使用參數的 SQL 指令字串來 建立 Command 物件,如下所示: objCmd = _ New OleDbCommand(strSQL, objCon) New OleDbCommand(strSQL, objCon) 上述程式碼建立 Command 物件, objCon 是 Connection 物件 。 上述程式碼建立 Command 物件, objCon 是 Connection 物件 。

44 8-6 使用參數 SQL 指令的資料庫操作 - 建立 Parameter 參數物件 然後使用 Parameters 屬性取得 ParameterCollection 集合物件,使用 Add() 方 法新增參數的 Parameter 物件,如下所示: 然後使用 Parameters 屬性取得 ParameterCollection 集合物件,使用 Add() 方 法新增參數的 Parameter 物件,如下所示: objCmd.Parameters.Add(New OleDbParameter( _ "@name", OleDbType.Varchar, 10)) "@name", OleDbType.Varchar, 10)) objCmd.Parameters.Add(New OleDbParameter( _ "@birthday", OleDbType.Date)) "@birthday", OleDbType.Date))……… objCmd.Parameters.Add(New OleDbParameter( _ "@username", OleDbType.Varchar, 10)) "@username", OleDbType.Varchar, 10)) objCmd.Parameters.Add(New OleDbParameter( _ "@password", OleDbType.Varchar, 10)) "@password", OleDbType.Varchar, 10))

45 8-6 使用參數 SQL 指令的資料庫操作 - 指定參數 SQL 指令的參數值 當 Command 物件新增 ParameterCollection 集 合物件的參數物件後,在使用 Execute() 方法執 行 SQL 指令前,就可以指定參數值,如下所示: 當 Command 物件新增 ParameterCollection 集 合物件的參數物件後,在使用 Execute() 方法執 行 SQL 指令前,就可以指定參數值,如下所示:objCmd.Parameters("@name").Value=name.Text objCmd.Parameters("@birthday").Value= _ birthday.Text birthday.TextobjCmd.Parameters("@salary").Value=salary.TextobjCmd.Parameters("@email").Value=email.Text objCmd.Parameters("@username").Value= _ username.Text username.Text objCmd.Parameters("@password").Value= _ password.Text password.Text


Download ppt "第 8 章 ADO.NET 的網頁資料庫操 作 8-1 網頁資料庫的基礎 8-1 網頁資料庫的基礎 8-2 建立資料庫與新增 ODBC 8-2 建立資料庫與新增 ODBC 8-3 ADO.NET 的基礎 8-3 ADO.NET 的基礎 8-4 SQL 指令的資料庫操作 8-4 SQL 指令的資料庫操作."

Similar presentations


Ads by Google