DataAdapter

DataAdapter

DataSet對象表示數據源中數據的本地副本,它是Microsoft NET Framework的一個主要創新。DataSet對象本身可用來引用數據源,然而為了擔當真正的數據管理工具,DataSet必須能夠與數據源交互。為了實現該功能,.NET提供了DataAdapter類。

語法


示組  令據庫連,填充 據源。
空:System.Data.Common
程序集:System.Data(在 system.data.dll 中)
public class DataAdapter : Component, IDataAdapter

原理


DataAdapter對象充當DataSet和數據源之間用於檢索和保存數據的橋樑。DataAdapter類代表用於填充DataSet以及更新數據源的一組 資料庫命令和一個資料庫連接。DataAdapter對象是ADO.NET數據提供程序的組成部分,該數據提供程序還包括連接對象、數據讀取器對象和命令對象。
每個DataAdapter都在DataSet中的單個DataTable對象和 SQL語句或存儲過程所產生的單個結果集之間交換數據。可以使用DataAdpater在DataSet和數據源之間交換數據。一個常見例子是應用程序將數據從資料庫讀到DataSet中,然後將DateSet中的更改寫回到資料庫中。然而,DataAdapter可以從任何數據源中檢索和更新數據(不僅僅是資料庫),例如從Microsoft BizTalk伺服器應用程序將數據讀取到DataSet。
XxxDataAdapter類提供了方便地管理斷開式功能性的途徑,如上圖所示。它用於填充數據集,然後以數據集的任何更改來更新相應的數據源。
DataAdapter是為將查詢結果存儲到DataSet對象和DataTable對象中而設計的。Command對象使用戶能夠通過DataReader對象來檢查查詢結果。DataAdapter對象由一系列Command對象和決定DataAdapter如何與DataSet通信的映射屬性的集合組成。
當使用DataAdapter將查詢結果存儲到DataSet時,DataAdapter使用Command與資料庫進行通信。在內部,DataAdapter使用DataReader讀取結果,然後將該結果複製到DataSet的新行中。DataAdapter用來從資料庫中讀取數據的Command對象存儲在DataAdapter對象的SelectCommand屬性中。
DataAdapter對象還有其他一些屬性也包含Command對象:InsertCommand、UpdateCommand和DeleteCommand。DataAdapter使用這些Command對象將保存在DataSet中的更改提交到資料庫。
可以使用數據適配器來填充DataSet,並將數據的更改傳送回數據源。

操作步驟


使用帶SQL Server .NET數據提供程序的DataSet的步驟如下:
(1)創建SqlConnection對象,連接到SQL Server資料庫。
(2)創建SqlDataAdapter對象。該對象包含能夠指向4個SqlCommand對象的屬性,這些對象指定SQL語句在資料庫中進行SELECT、INSERT、DELETE和UPDATE等數據操作。
(3)創建包含一個或多個表的DataSet對象。
(4)使用SqlDataAdapter對象,通過調用Fill方法來填充DataSet表。SqlDataAdapter隱式執行包含SELECT語句的SqlCommand對象。
(5)修改DataSet中的數據。可以通過編程方式來執行修改,或者將DataSet綁定到用戶界面控制項(例如DataGrid),然後在控制項中更改數據。
(6)在準備將數據更改返回資料庫時,可以使用SqlDataAdapter並調用Update方法。SqlDataAdapter對象隱式使用其SqlCommand對象對資料庫執行INSERT、DELETE和UPDATE語句

屬性和方法


儘管DataAdapter類包含很多屬性和方法,但很可能每次只使用它們的某個子集。使用DataAdapter可對來自數據源的記錄進行操作。通過使用4個DataAdapter屬性(指定執行某條SQL語句或調用某個存儲過程)中的一個,可以指定所要執行的操作。這些屬性實際上是SqlCommand或OleDbCommand類的實例對象:
SelectCommand引用從數據源中檢索行的Command對象。
InsertCommand引用將插入的行從DataSet寫入數據源的Command對象。
UpdateCommand引用將修改的行從DataSet寫入數據源的Command對象。
DeleteCommand引用從數據源中刪除行的Command對象。
使用DataAdapter提供的方法,可以填充DataSet或將DataSet表中的更改傳送到相應的數據存儲區。這些方法包括:
Fill。使用SqlDataAdapter(或OleDbDataAdapter)的這個方法,從數據源增加或刷新行,並將這些行放到DataSet表中。Fill方法調用SelectCommand屬性所指定的SELECT語句。
Update。使用DataAdapter對象的這個方法,將DataSet表的更改傳送到相應的數據源中。該方法為DataSet的DataTable中每一指定的行調用相應的INSERT、UPDATE或DELETE命令。

備註


DataAdapter 用作 DataSet 和數據源之間的橋接器以便檢索和保存數據。 DataAdapter 通過映射Fill(這更改了 DataSet 中的數據以便與數據源中的數據相匹配)和Update(這更改了數據源中的數據以便與 DataSet 中的數據相匹配)來提供這一橋接器。
如果所連接的是 SQL Server 資料庫,則可以通過將SqlDataAdapter與關聯的SqlCommand和SqlConnection對象一起使用,從而提高總體性能。對於支持 OLE DB 的數據源,請使用 DataAdapter 及其關聯的OleDbCommand和 OleDbConnection 對象。對於支持 ODBC 的數據源,請使用 DataAdapter 及其關聯的OdbcCommand和OdbcConnection對象。對於 Oracle 資料庫,請使用 DataAdapter 及其關聯的OracleCommand和OracleConnection對象。
當創建 DataAdapter 的實例時,讀/寫屬性將被設置為初始值。有關這些值的列表,請參見 DataAdapter 構造函數。