第 8 章 ADO.NET的網頁資料庫操作

45
8 8 ADO.NET ADO.NET 第第第第第第第第 第第第第第第第第 8-1 8-1 第第第第第第第第 第第第第第第第第 8-2 8-2 第第第第第第第第 第第第第第第第第 ODBC ODBC 8-3 ADO.NET 8-3 ADO.NET 第第第 第第第 8-4 SQL 8-4 SQL 第第第第第第第第 第第第第第第第第 8-5 DataSet 8-5 DataSet 第第第第第第 第第第第第第 8-6 8-6 第第第第 第第第第 SQL SQL 第第第第第第第第 第第第第第第第第

description

第 8 章 ADO.NET的網頁資料庫操作. 8-1 網頁資料庫的基礎 8-2 建立資料庫與新增 ODBC 8-3 ADO.NET 的基礎 8-4 SQL 指令的資料庫操作 8-5 DataSet 的資料庫操作 8-6 使用參數 SQL 指令的資料庫操作. 8-1 網頁資料庫的基礎. 8-1-1 資料庫系統 8-1-2 建立網頁資料庫. 8-1-1 資料庫系統. 在電腦計算機科學的應用領域,「資料庫」( Database )才是公司行號或家庭電腦化的推手,眾多的出勤管理系統、倉庫管理系統、進銷存系統或小至錄影帶店管理系統,都屬於不同應用的資料庫系統。 - PowerPoint PPT Presentation

Transcript of 第 8 章 ADO.NET的網頁資料庫操作

Page 1: 第 8 章  ADO.NET的網頁資料庫操作

第第 88 章 章 ADO.NETADO.NET的網頁資料庫的網頁資料庫操作操作

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

Page 2: 第 8 章  ADO.NET的網頁資料庫操作

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

Page 3: 第 8 章  ADO.NET的網頁資料庫操作

8-1-1 8-1-1 資料庫系統資料庫系統 在電腦計算機科學的應用領域,「資料庫」在電腦計算機科學的應用領域,「資料庫」(( DatabaseDatabase )才是公司行號或家庭電腦化的推)才是公司行號或家庭電腦化的推手,眾多的出勤管理系統、倉庫管理系統、進銷手,眾多的出勤管理系統、倉庫管理系統、進銷存系統或小至錄影帶店管理系統,都屬於不同應存系統或小至錄影帶店管理系統,都屬於不同應用的資料庫系統。用的資料庫系統。

資料庫系統本身是一套應用程式,例如:資料庫系統本身是一套應用程式,例如: AccessAccess、、MySQLMySQL、、 SQL ServerSQL Server和和 OracleOracle 等,資料庫使等,資料庫使用者可以使用用者可以使用 SQLSQL 資料庫語言來儲存和管理所需資料庫語言來儲存和管理所需的資料,事實上,只有複雜的應用系統,程式開的資料,事實上,只有複雜的應用系統,程式開發者才需替客戶量身定作所需的資料庫系統。發者才需替客戶量身定作所需的資料庫系統。

Page 4: 第 8 章  ADO.NET的網頁資料庫操作

8-1-2 8-1-2 建立網頁資料庫建立網頁資料庫 -- 說明說明 網頁資料庫是使用資料庫作為網頁內容的網頁資料庫是使用資料庫作為網頁內容的

資料來源,它是結合資料來源,它是結合 WebWeb 伺服器和資料庫伺服器和資料庫系統的一種應用程式架構,如下圖所示:系統的一種應用程式架構,如下圖所示:

Page 5: 第 8 章  ADO.NET的網頁資料庫操作

8-1-2 8-1-2 建立網頁資料庫建立網頁資料庫 -- 步驟步驟 ASP.NETASP.NET 技術建立網頁資料庫的步驟,如技術建立網頁資料庫的步驟,如

下所示:下所示:• Step 1Step 1 :建立網頁內容所需的資料庫,即:建立網頁內容所需的資料庫,即

AccessAccess 資料庫檔案資料庫檔案 .mdb.mdb ,或,或 SQL ServerSQL Server資料庫。資料庫。

• Step 2Step 2 :新增伺服器的:新增伺服器的 ODBCODBC 資料來源或使資料來源或使用用 OLEDBOLEDB或或 SQL ServerSQL Server 的「提供者」的「提供者」(( Managed ProvidersManaged Providers )來連結資料庫。)來連結資料庫。

• Step 3Step 3 :撰寫:撰寫 ASP.NETASP.NET 程式,使用程式,使用ADO.NETADO.NET 存取資料庫記錄來產生網頁內容。存取資料庫記錄來產生網頁內容。

• Step 4Step 4 :啟動瀏覽程式執行與測試:啟動瀏覽程式執行與測試 ASP.NETASP.NET程式執行結果。程式執行結果。

Page 6: 第 8 章  ADO.NET的網頁資料庫操作

8-2 8-2 建立資料庫與新增建立資料庫與新增 ODBCODBC

8-2-1 8-2-1 建立資料庫建立資料庫 8-2-2 8-2-2 新增新增 ODBCODBC 系統資料來源系統資料來源

Page 7: 第 8 章  ADO.NET的網頁資料庫操作

8-2-1 8-2-1 建立資料庫建立資料庫 -- 建立建立 AccessAccess 資資料庫料庫

AccessAccess 資料庫資料庫 Users.mdbUsers.mdb 擁有擁有 UsersUsers 資資料表,欄位說明如下表所示:料表,欄位說明如下表所示:欄位名稱 資料類型 大小 說明

UserID 自動編號 N/A 使用者編號UserName 文字 10 使用者名稱

UserPassword 文字 10 使用者密碼Name 文字 10 姓名Email 文字 25 電子郵件地址

Birthday 日期/時間 N/A 生日Salary 貨幣 N/A 薪水

Page 8: 第 8 章  ADO.NET的網頁資料庫操作

8-2-1 8-2-1 建立資料庫建立資料庫 -- 建立建立 SQL SQL Server 2005 ExpressServer 2005 Express 資料庫資料庫

在安裝在安裝 Visual Visual Web DeveloperWeb Developer同時也安裝同時也安裝 SQL SQL Server 2005 Server 2005 ExpressExpress ,在,在VWDVWD 提供相關介提供相關介面,可以幫助我們面,可以幫助我們建立建立 SQL ServerSQL Server資料庫。資料庫。

Page 9: 第 8 章  ADO.NET的網頁資料庫操作

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

Page 10: 第 8 章  ADO.NET的網頁資料庫操作

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

Page 11: 第 8 章  ADO.NET的網頁資料庫操作

8-3-1 8-3-1 什麼是什麼是 ADO.NET-ADO.NET- 說明說明 ADO.NETADO.NET 是微軟新一代技術,它是「是微軟新一代技術,它是「 ADOADO 」」(( ActiveX Data ObjectActiveX Data Object )元件的後繼者,目前)元件的後繼者,目前版本是版本是 2.02.0 版。其主要目的是在版。其主要目的是在 .NET .NET FrameworkFramework 平台存取資料,簡單的平台存取資料,簡單的說,說, ASP.NETASP.NET 是使用是使用 ADO.NETADO.NET 來進行資料庫來進行資料庫存取。存取。

ADO.NETADO.NET 的目的是提供一致的物件模型,可以的目的是提供一致的物件模型,可以存取和編輯資料來源的資料,換句話說,就是提存取和編輯資料來源的資料,換句話說,就是提供一致的資料處理方式,至於資料來源並不限資供一致的資料處理方式,至於資料來源並不限資料庫,幾乎任何資料來源都可以。以料庫,幾乎任何資料來源都可以。以 ASP.NETASP.NET的應用來說,的應用來說, ADO.NETADO.NET 的主要功能是存取資料的主要功能是存取資料庫,所以庫,所以 ASP.NETASP.NET 使用使用 ADO.NETADO.NET ,一般來說,一般來說都是為了建立網頁資料庫。都是為了建立網頁資料庫。

Page 12: 第 8 章  ADO.NET的網頁資料庫操作

8-3-1 8-3-1 什麼是什麼是 ADO.NET-ADO.NET- 名稱空名稱空間間

在在 ASP.NETASP.NET 程式需要匯入名稱空間來使用程式需要匯入名稱空間來使用ADO.NETADO.NET 類別。主要名稱空間有類別。主要名稱空間有 33 個,如個,如下表所示:下表所示:名稱空間 說明

System.Data 提供 DataSet、DataTable、DataRow、DataColumn和DataRelation類別,可以將資料庫的記錄資料儲存到記憶

體System.Data.OleDb OLE DB的.NET提供者,提供 OleDbCommand、

OleDbConnection、OleDbDataReader類別來處理 OLE DB

資料來源的資料庫System.Data.SqlClient SQL的.NET提供者,提供 SqlCommand、SqlConnection、

SqlDataReader類別來處理微軟Microsoft SQL Server 7.0

以上版本的資料庫

Page 13: 第 8 章  ADO.NET的網頁資料庫操作

8-3-2 ADO.NET8-3-2 ADO.NET 物件模型物件模型 -- 圖例圖例 ADO.NETADO.NET主要類別物件有:主要類別物件有:

ConnectionConnection、、 CommandCommand、、 DataReaderDataReader和和DataSetDataSet,其物件模型如下圖所示:,其物件模型如下圖所示:

Page 14: 第 8 章  ADO.NET的網頁資料庫操作

8-3-2 ADO.NET8-3-2 ADO.NET 物件模型物件模型 --ConnectionConnection 物件物件

ConnectionConnection 物件可以建立與資料來源間的連結,物件可以建立與資料來源間的連結,以資料庫來說,以資料庫來說, ConnectionConnection 物件還負責初始資物件還負責初始資料庫。料庫。 ConnectionConnection 物件有兩種:物件有兩種: OLE DBOLE DB 是使是使用用 OleDbConnectionOleDbConnection 物件,物件, SQL ServerSQL Server 是使是使用用 SqlConnectionSqlConnection 物件。物件。

換個角度來說,換個角度來說, WebWeb 伺服器和資料庫系統間本伺服器和資料庫系統間本來沒有任何關係,屬於兩套不同的應用程式,透來沒有任何關係,屬於兩套不同的應用程式,透過過 ODBCODBC或或 OLE DBOLE DB 可以開啟資料來源的資料庫,可以開啟資料來源的資料庫,ConnectionConnection 物件進一步將物件進一步將 ASP.NETASP.NET 程式和資料程式和資料庫連結起來。庫連結起來。

Page 15: 第 8 章  ADO.NET的網頁資料庫操作

8-3-2 ADO.NET8-3-2 ADO.NET 物件模型物件模型 --CommandCommand 物件物件

CommandCommand 物件可以對資料來源執行指令,物件可以對資料來源執行指令,以資料庫來說,就是執行以資料庫來說,就是執行 SQLSQL 指指令。令。 ASP.NETASP.NET 程式可以使用程式可以使用 CommandCommand物件送出物件送出 SQLSQL 指令來新增、刪除、更新和指令來新增、刪除、更新和查詢資料表的記錄。查詢資料表的記錄。

在在 ASP.NETASP.NET 程式需要先使用程式需要先使用 ConnectionConnection物件建立資料庫連結後,才能使用物件建立資料庫連結後,才能使用CommandCommand 物件執行物件執行 SQLSQL 指指令,令, CommandCommand 物件分為兩種:物件分為兩種: OLE DBOLE DB是使用是使用 OleDbCommandOleDbCommand 物件,物件, SQL SQL ServerServer 是使用是使用 SqlCommandSqlCommand 物件。物件。

Page 16: 第 8 章  ADO.NET的網頁資料庫操作

8-3-2 ADO.NET8-3-2 ADO.NET 物件模型物件模型 --DataReaderDataReader 物件物件

ADO.NETADO.NET的的 DataReaderDataReader 物件可以從資物件可以從資料來源使用料來源使用 CommandCommand 物件執行指令,取物件執行指令,取得「唯讀」(得「唯讀」( Read-OnlyRead-Only )和「只能向)和「只能向前」(前」( Forward-OnlyForward-Only )的串流資料,每)的串流資料,每次只能從資料來源讀取一列資料(即一次只能從資料來源讀取一列資料(即一筆)儲存到記憶體,所以執行效率非常高。筆)儲存到記憶體,所以執行效率非常高。

DataReaderDataReader 物件分為兩種:物件分為兩種: OLE DBOLE DB 是是使用使用 OleDbDataReaderOleDbDataReader 物件,物件, SQL SQL ServerServer 是使用是使用 SqlDataReaderSqlDataReader 物件。物件。

Page 17: 第 8 章  ADO.NET的網頁資料庫操作

8-3-2 ADO.NET8-3-2 ADO.NET 物件模型物件模型 --DataSetDataSet和和 DataTableDataTable 物件物件

DataSetDataSet 物件是由物件是由 DataTableDataTable 物件組成的集合物件組成的集合物件,物件, DataSetDataSet 物件可代表儲存在記憶體的資料物件可代表儲存在記憶體的資料庫,每一個庫,每一個 DataTableDataTable 儲存一個資料表的記錄資儲存一個資料表的記錄資料,並且可以設定資料表間的關聯性料,並且可以設定資料表間的關聯性(( RelationshipRelationship )。)。

DataSetDataSet和和 DataTableDataTable 類別屬於類別屬於 System.DataSystem.Data名稱空間,當名稱空間,當 ASP.NETASP.NET 程式需要將資料表的記程式需要將資料表的記錄資料填入錄資料填入 DataTableDataTable 物件時,我們需要使用物件時,我們需要使用DataAdapterDataAdapter 類別的方法類別的方法 Fill()Fill() 將資料表的資料將資料表的資料填入填入 DataSetDataSet 物件。物件。

Page 18: 第 8 章  ADO.NET的網頁資料庫操作

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

Page 19: 第 8 章  ADO.NET的網頁資料庫操作

8-4-1 SQL8-4-1 SQL 指令的資料庫操作指令的資料庫操作 --匯入名稱空間匯入名稱空間

在在 ASP.NETASP.NET 程式可以使用程式可以使用 ADO.NETADO.NET的的 CommandCommand 物物件來執行件來執行 SQLSQL 指令,程式是使用指令,程式是使用 ConnectionConnection 物件來建物件來建立資料庫連結。立資料庫連結。 ASP.NETASP.NET 程式首先匯入所需的名稱空間,程式首先匯入所需的名稱空間,如下所示:如下所示:

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

%>%> 上述名稱空間是使用在非上述名稱空間是使用在非 SQL ServerSQL Server 的資料庫系統的資料庫系統(( 7.07.0 以上的版本),例如:以上的版本),例如: AccessAccess或或 OracleOracle。。 SQL SQL ServerServer 建議匯入的名稱空間,如下所示:建議匯入的名稱空間,如下所示:

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

%>%>

Page 20: 第 8 章  ADO.NET的網頁資料庫操作

8-4-1 SQL8-4-1 SQL 指令的資料庫操作指令的資料庫操作 --步驟一:建立和開啟資料庫連結步驟一:建立和開啟資料庫連結

ASP.NETASP.NET 程式在匯入名稱空間後,就可以建立程式在匯入名稱空間後,就可以建立ConnectionConnection 物件,如下所示:物件,如下所示:

objCon = New OleDbConnection(strDbCon)objCon = New OleDbConnection(strDbCon) 上述程式碼建立名為上述程式碼建立名為 objConobjCon的的

OleDbConnectionOleDbConnection 物件。物件。 strDbConstrDbCon變數是資變數是資料來源字串,如下所示:料來源字串,如下所示:

strDbCon="Provider=Microsoft.Jet.OLEDB.4.0;" & _strDbCon="Provider=Microsoft.Jet.OLEDB.4.0;" & _

"Data Source=" & _"Data Source=" & _

Server.Mappath("/Ch08/Users.mdb")Server.Mappath("/Ch08/Users.mdb")

Page 21: 第 8 章  ADO.NET的網頁資料庫操作

8-4-1 SQL8-4-1 SQL 指令的資料庫操作指令的資料庫操作 --步驟二:建立步驟二:建立 CommandCommand 物件物件

在開啟資料庫連結後,就可以建立在開啟資料庫連結後,就可以建立CommandCommand 物件來指定欲執行的物件來指定欲執行的 SQLSQL 指令指令字串,如下所示:字串,如下所示:objCmd = New OleDbCommand( _objCmd = New OleDbCommand( _

strSQL, objCon)strSQL, objCon)

Page 22: 第 8 章  ADO.NET的網頁資料庫操作

8-4-1 SQL8-4-1 SQL 指令的資料庫操作指令的資料庫操作 --步驟三:執行步驟三:執行 SQLSQL 指令處理資料庫指令處理資料庫

現在現在 ASP.NETASP.NET 程式已經開啟資料庫連結和程式已經開啟資料庫連結和建立建立 CommandCommand 物件,接著就可以使用物件,接著就可以使用CommandCommand 物件的物件的 ExecuteNonQuery()ExecuteNonQuery()方法來執行方法來執行 SQLSQL 指令,如下所示:指令,如下所示:

count = objCmd.ExecuteNonQuery()count = objCmd.ExecuteNonQuery() 程式碼的變數程式碼的變數 countcount 可以取得影響的記錄可以取得影響的記錄

數,此方法執行數,此方法執行 SQLSQL 指令並不會傳回記錄指令並不會傳回記錄資料。資料。

Page 23: 第 8 章  ADO.NET的網頁資料庫操作

8-4-1 SQL8-4-1 SQL 指令的資料庫操作指令的資料庫操作 --步驟四:關閉資料庫連結步驟四:關閉資料庫連結

在完成資料庫操作後,請記得使用在完成資料庫操作後,請記得使用ConnectionConnection 物件的物件的 Close()Close() 方法關閉資料方法關閉資料庫連結。以庫連結。以 ConnectionConnection 物件物件 objConobjCon 為為例,如下所示:例,如下所示:objCon.Close()objCon.Close()

Page 24: 第 8 章  ADO.NET的網頁資料庫操作

8-4-2 8-4-2 插入新記錄插入新記錄 -SQL-SQL 指令指令 在在 ASP.NETASP.NET 程式插入記錄,最重要的部分是建程式插入記錄,最重要的部分是建立立 CommandCommand 物件執行的物件執行的 SQLSQL 指令,插入新記指令,插入新記錄的錄的 SQLSQL 指令字串,如下所示:指令字串,如下所示:

strSQL="INSERT INTO USERS (name,birthday," & _strSQL="INSERT INTO USERS (name,birthday," & _ "salary,email,username,userpassword) ""salary,email,username,userpassword) "strSQL = strSQL & "VALUES ('" & name.Text & "',"strSQL = strSQL & "VALUES ('" & name.Text & "',"strSQL = strSQL & "#" & birthday.Text & "#,"strSQL = strSQL & "#" & birthday.Text & "#,"strSQL = strSQL & salary.Text & ",'"strSQL = strSQL & salary.Text & ",'"strSQL = strSQL & email.Text & "','"strSQL = strSQL & email.Text & "','"strSQL = strSQL & username.Text & "','"strSQL = strSQL & username.Text & "','"strSQL = strSQL & password.Text & "')" strSQL = strSQL & password.Text & "')"

Page 25: 第 8 章  ADO.NET的網頁資料庫操作

8-4-2 8-4-2 插入新記錄插入新記錄 --注意事項注意事項 不論欄位或值清單,都是使用逗號「不論欄位或值清單,都是使用逗號「 ,, 」分隔。」分隔。 在在 VALUESVALUES 的欄位值中,數值不用單引號括起,的欄位值中,數值不用單引號括起,字元和日期字元和日期 //時間是使用單引號括起,如果是時間是使用單引號括起,如果是AccessAccess 資料庫,日期資料庫,日期 //時間是使用「時間是使用「 ## 」符號」符號括起。括起。

欄位清單並不需要和資料表定義的欄位數目或順欄位清單並不需要和資料表定義的欄位數目或順序相同,只需列出欲插入欄位即可,不過,非序相同,只需列出欲插入欄位即可,不過,非NULLNULL值欄位一定要列出,而且括號內的欄位順值欄位一定要列出,而且括號內的欄位順序必須和序必須和 VALUESVALUES值的順序相同。值的順序相同。

Page 26: 第 8 章  ADO.NET的網頁資料庫操作

8-4-3 8-4-3 更新記錄更新記錄 -SQL-SQL 指令指令 在在 ASP.NETASP.NET 程式的程式的 SQLSQL 指令是以使用者指令是以使用者帳號作為更新記錄的條件,更新欄位是帳號作為更新記錄的條件,更新欄位是UserPasswordUserPassword和和 EmailEmail,, SQLSQL 指令字指令字串,如下所示:串,如下所示:

strSQL = "UPDATE USERS SET "strSQL = "UPDATE USERS SET "strSQL &="UserPassword='" & _strSQL &="UserPassword='" & _ password.Text & "' , "password.Text & "' , "strSQL &="Email='" & email.Text & "'"strSQL &="Email='" & email.Text & "'"strSQL &=" WHERE UserName='" & _strSQL &=" WHERE UserName='" & _ username.Text & "'"username.Text & "'"

Page 27: 第 8 章  ADO.NET的網頁資料庫操作

8-4-3 8-4-3 更新記錄更新記錄 --注意事項注意事項 WHEREWHERE 子句是必要元素,如果沒有條件,子句是必要元素,如果沒有條件,

資料表內所有記錄欄位都會更新。資料表內所有記錄欄位都會更新。 對於更新欄位值,數值不用單引號括起,對於更新欄位值,數值不用單引號括起,字元和日期字元和日期 //時間是使用單引號括起,如果時間是使用單引號括起,如果是是 AccessAccess 資料庫,日期資料庫,日期 //時間是使用時間是使用「「 ## 」符號括起。」符號括起。

Page 28: 第 8 章  ADO.NET的網頁資料庫操作

8-4-4 8-4-4 刪除記錄刪除記錄 -SQL-SQL 指令指令 在在 ASP.NETASP.NET 程式建立程式建立 SQLSQL 指令字串,就指令字串,就

可以使用可以使用 CommandCommand 物件執行物件執行 DELETEDELETE 指指令來刪除記錄資料,如下所示:令來刪除記錄資料,如下所示:

strSQL = _strSQL = _

"DELETE FROM USERS WHERE UserName ='" & _"DELETE FROM USERS WHERE UserName ='" & _

username.Text & "'"username.Text & "'"

Page 29: 第 8 章  ADO.NET的網頁資料庫操作

8-4-4 8-4-4 刪除記錄刪除記錄 --注意事項注意事項 WHEREWHERE 子句是必要元素,如果沒有此條子句是必要元素,如果沒有此條

件,資料表內的所有記錄都會刪除掉。件,資料表內的所有記錄都會刪除掉。 WHEREWHERE 條件的比較運算子和條件的比較運算子和 Visual Visual

Basic 2005Basic 2005 語法相類似,能夠使用語法相類似,能夠使用== 、、 <><>、、 >> 、、 <=<=和和 >=>= 。。

WHEREWHERE 條件如果不只一個,需要使用邏條件如果不只一個,需要使用邏輯運算子來連結,如下表所示:輯運算子來連結,如下表所示:運算子 說明AND 必須連結條件都為真,即「且」OR 只需連結的任一條件成立即可,即「或」

Page 30: 第 8 章  ADO.NET的網頁資料庫操作

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

Page 31: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟一:建立步驟一:建立 ConnectionConnection 物件物件

ASP.NETASP.NET 程式需要使用程式需要使用 ConnectionConnection 物件物件來建立資料庫連結,如下所示:來建立資料庫連結,如下所示:objCon = New objCon = New

OleDbConnection(strDbCon)OleDbConnection(strDbCon) 上述程式碼建立上述程式碼建立 objConobjCon 的資料庫連結物的資料庫連結物

件。件。

Page 32: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟二:建立步驟二:建立 DataAdapterDataAdapter和和 CommandBuilderCommandBuilder 物物

件件 在在 DataSetDataSet 物件是使用物件是使用 DataAdapterDataAdapter 物件來取物件來取

得記錄資料,它是得記錄資料,它是 DataSetDataSet和和 ConnectionConnection 物件物件資料來源間的橋樑,可以取得資料來源間的橋樑,可以取得 DataSetDataSet 的記錄資的記錄資料和更新資料來源的記錄資料。料和更新資料來源的記錄資料。

DataAdapterDataAdapter 類別也擁有類別也擁有 22 個版本,個版本, SQL SQL ServerServer是是 SqlDataAdapterSqlDataAdapter ,以本節為例是使,以本節為例是使用用 OLE DBOLE DB的的 OleDbDataAdapterOleDbDataAdapter ,如下所示:,如下所示:

strSQL = "SELECT * FROM Users"strSQL = "SELECT * FROM Users"objDataAdapter= _objDataAdapter= _ New OleDbDataAdapter(strSQL,objCon)New OleDbDataAdapter(strSQL,objCon)

Page 33: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟二:建立步驟二:建立 DataAdapterDataAdapter和和 CommandBuilderCommandBuilder 物物

件件 DataAdapterDataAdapter 物件提供物件提供 44 個屬性個屬性

SelectCommandSelectCommand、、 InsertCommandInsertCommand、、 DeleDeleteCommandteCommand和和 UpdateCommandUpdateCommand ,可以分別,可以分別指定查詢、插入、刪除和更新指定查詢、插入、刪除和更新 SQLSQL 指令的指令的CommandCommand 物件,不過,我們並不用自行建立,物件,不過,我們並不用自行建立,可以使用可以使用 CommandBuilderCommandBuilder 物件來自動幫我們物件來自動幫我們建立建立 SQLSQL 指令,如下所示:指令,如下所示:

Dim objCmdBuilder As OleDbCommandBuilder = _Dim objCmdBuilder As OleDbCommandBuilder = _

New OleDbCommandBuilder(objDataAdapter)New OleDbCommandBuilder(objDataAdapter)

Page 34: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟三:建立步驟三:建立 DataSetDataSet 物件填入記錄資料物件填入記錄資料

現在我們可以建立現在我們可以建立 DataSetDataSet 物件且執行物件且執行DataAdapterDataAdapter的的 SQLSQL 查詢指令,將記錄資料填查詢指令,將記錄資料填入入 DataSetDataSet ,如下所示:,如下所示:

objDataSet As DataSet = New DataSet()objDataSet As DataSet = New DataSet()

objDataAdapter.Fill(objDataSet, "Users")objDataAdapter.Fill(objDataSet, "Users") 上述程式碼建立上述程式碼建立 DataSetDataSet 物件後,使用物件後,使用

DataAdpaterDataAdpater 物件的物件的 Fill()Fill() 方法將方法將 SQLSQL 指令的指令的查詢結果,填入第查詢結果,填入第 11 個參數的的個參數的的 DataSetDataSet 物件。物件。

Page 35: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟四:在步驟四:在 DataTableDataTable 執行資料庫操作執行資料庫操作

DataSetDataSet 物件的每一個物件的每一個 DataTableDataTable 物件是物件是對應資料庫的一個資料表,當建立好對應資料庫的一個資料表,當建立好DataSetDataSet 物件填入記錄資料後,就可以在物件填入記錄資料後,就可以在DataTableDataTable 物件插入、刪除和更新列物件物件插入、刪除和更新列物件DataRowDataRow ,這就是一筆記錄。,這就是一筆記錄。

Page 36: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟五:更新資料表的記錄資料步驟五:更新資料表的記錄資料

在在 DataTableDataTable 物件新增、更新或刪除物件新增、更新或刪除DataRowDataRow 物件後,因為操作是針對儲存在物件後,因為操作是針對儲存在記憶體的記憶體的 DataSetDataSet 物件,最後我們還需要物件,最後我們還需要更新資料來源的記錄資料,如下所示:更新資料來源的記錄資料,如下所示:

count = objDataAdapter.Update( _count = objDataAdapter.Update( _

objDataSet, "Users")objDataSet, "Users")

Page 37: 第 8 章  ADO.NET的網頁資料庫操作

8-5-1 DataSet8-5-1 DataSet 物件的資料庫操作物件的資料庫操作 --步驟六:關閉資料庫連結步驟六:關閉資料庫連結

最後記得需要關閉資料庫連結,即使用最後記得需要關閉資料庫連結,即使用ConnectionConnection 物件的物件的 Close()Close() 方法,如下所方法,如下所示:示:objCon.Close()objCon.Close()

Page 38: 第 8 章  ADO.NET的網頁資料庫操作

8-5-2 8-5-2 插入新記錄插入新記錄 --建立建立 DataRowDataRow 物件物件

DataSetDataSet 物件插入新記錄操作是針對物件插入新記錄操作是針對 DataTableDataTable物件,所謂插入記錄就是新增物件,所謂插入記錄就是新增 DataRowDataRow 物件,物件,如下所示:如下所示:

Dim objDataRow As DataRowDim objDataRow As DataRowobjDataRow = _objDataRow = _ objDataSet.Tables("Users").NewRow()objDataSet.Tables("Users").NewRow() 接著輸入欄位值,如下所示:接著輸入欄位值,如下所示:objDataRow("name") = name.TextobjDataRow("name") = name.TextobjDataRow("birthday") = birthday.TextobjDataRow("birthday") = birthday.Text……………………………………objDataRow("userpassword") = _objDataRow("userpassword") = _ password.Textpassword.Text

Page 39: 第 8 章  ADO.NET的網頁資料庫操作

8-5-2 8-5-2 插入新記錄插入新記錄 --新增至新增至 DataTableDataTable 物件物件

最後將最後將 DataRowDataRow 物件新增到物件新增到 DataTableDataTable物件,如下所示:物件,如下所示:

objDataSet.Tables("Users").Rows.Add(objDataRow)objDataSet.Tables("Users").Rows.Add(objDataRow)

Page 40: 第 8 章  ADO.NET的網頁資料庫操作

8-5-3 8-5-3 更新記錄更新記錄 DataSetDataSet 物件的更新記錄操作,因為擁有更新條件,所以物件的更新記錄操作,因為擁有更新條件,所以

需要使用迴路找尋欲更新記錄後,才能更新記錄資料,如需要使用迴路找尋欲更新記錄後,才能更新記錄資料,如下所示:下所示:

For Each objDataRow in _For Each objDataRow in _ objDataSet.Tables("Users").RowsobjDataSet.Tables("Users").Rows If objDataRow("UserName") = _If objDataRow("UserName") = _ username.Text Thenusername.Text Then objDataRow("UserPassword") = password.TextobjDataRow("UserPassword") = password.Text objDataRow("Email") = email.TextobjDataRow("Email") = email.Text End IfEnd IfNextNext

Page 41: 第 8 章  ADO.NET的網頁資料庫操作

8-5-4 8-5-4 刪除記錄刪除記錄 同樣方式,我們可以使用同樣方式,我們可以使用 DataSetDataSet 物件來物件來

刪除資料表的記錄,如下所示:刪除資料表的記錄,如下所示:For Each objDataRow in _For Each objDataRow in _

objDataSet.Tables("Users").RowsobjDataSet.Tables("Users").Rows

If objDataRow("UserName") = _If objDataRow("UserName") = _

username.Text Thenusername.Text Then

objDataRow.Delete()objDataRow.Delete()

End IfEnd If

NextNext

Page 42: 第 8 章  ADO.NET的網頁資料庫操作

8-6 8-6 使用參數使用參數 SQLSQL 指令的資料庫操指令的資料庫操作作 -- 參數的參數的 SQLSQL 指令字串指令字串

CommandCommand 物件如果需要新增物件如果需要新增 ParameterParameter 物件物件的參數,在的參數,在 SQLSQL 指令字串也需要新增參數,這是指令字串也需要新增參數,這是以「@」符號開頭的字串名稱,如下所示:以「@」符號開頭的字串名稱,如下所示:

strSQL="INSERT INTO USERS (name,birthday," & _strSQL="INSERT INTO USERS (name,birthday," & _ "salary,email,username,userpassword) ""salary,email,username,userpassword) "strSQL &="VALUES ( @name, @birthday,@salary, "strSQL &="VALUES ( @name, @birthday,@salary, "strSQL &="@email, @username, @password)"strSQL &="@email, @username, @password)" 上述上述 SQLSQL 指令字串的指令字串的

@name@name、、@birthday@birthday、、@salary@salary、、@email@email、、@username@username和和@password@password 就是參數。就是參數。

Page 43: 第 8 章  ADO.NET的網頁資料庫操作

8-6 8-6 使用參數使用參數 SQLSQL 指令的資料庫操指令的資料庫操作作 -- 建立建立 ParameterParameter 參數物件參數物件

接著我們可以使用參數的接著我們可以使用參數的 SQLSQL 指令字串來指令字串來建立建立 CommandCommand 物件,如下所示:物件,如下所示:

objCmd = _objCmd = _

New OleDbCommand(strSQL, objCon)New OleDbCommand(strSQL, objCon) 上述程式碼建立上述程式碼建立 CommandCommand 物物

件,件, objConobjCon是是 ConnectionConnection 物件物件。。

Page 44: 第 8 章  ADO.NET的網頁資料庫操作

8-6 8-6 使用參數使用參數 SQLSQL 指令的資料庫操指令的資料庫操作作 -- 建立建立 ParameterParameter 參數物件參數物件

然後使用然後使用 ParametersParameters 屬性取得屬性取得ParameterCollectionParameterCollection 集合物件,使用集合物件,使用 Add()Add() 方方法新增參數的法新增參數的 ParameterParameter 物件,如下所示:物件,如下所示:

objCmd.Parameters.Add(New OleDbParameter( _objCmd.Parameters.Add(New OleDbParameter( _ "@name", OleDbType.Varchar, 10))"@name", OleDbType.Varchar, 10))objCmd.Parameters.Add(New OleDbParameter( _objCmd.Parameters.Add(New OleDbParameter( _ "@birthday", OleDbType.Date))"@birthday", OleDbType.Date))………………objCmd.Parameters.Add(New OleDbParameter( _objCmd.Parameters.Add(New OleDbParameter( _ "@username", OleDbType.Varchar, 10))"@username", OleDbType.Varchar, 10))objCmd.Parameters.Add(New OleDbParameter( _objCmd.Parameters.Add(New OleDbParameter( _ "@password", OleDbType.Varchar, 10))"@password", OleDbType.Varchar, 10))

Page 45: 第 8 章  ADO.NET的網頁資料庫操作

8-6 8-6 使用參數使用參數 SQLSQL 指令的資料庫操指令的資料庫操作作 -- 指定參數指定參數 SQLSQL 指令的參數值指令的參數值

當當 CommandCommand 物件新增物件新增 ParameterCollectionParameterCollection集合物件的參數物件後,在使用集合物件的參數物件後,在使用 Execute()Execute() 方法方法執行執行 SQLSQL 指令前,就可以指定參數值,如下所示:指令前,就可以指定參數值,如下所示:

objCmd.Parameters("@name").Value=name.TextobjCmd.Parameters("@name").Value=name.TextobjCmd.Parameters("@birthday").Value= _objCmd.Parameters("@birthday").Value= _ birthday.Textbirthday.TextobjCmd.Parameters("@salary").Value=salary.TextobjCmd.Parameters("@salary").Value=salary.TextobjCmd.Parameters("@email").Value=email.TextobjCmd.Parameters("@email").Value=email.TextobjCmd.Parameters("@username").Value= _objCmd.Parameters("@username").Value= _ username.Textusername.TextobjCmd.Parameters("@password").Value= _objCmd.Parameters("@password").Value= _ password.Textpassword.Text