DataAdapter

科技 | 信息技術 | DataAdapter

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

語法

DataAdapter表示一組 SQL 命令和一個數據庫連接,它們用于填充 DataSet和更新數據源。

命名空間: 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和Odbc Connection對象 。對于 Oracle 數據庫,請使用 DataAdapter 及其關聯的OracleCommand和OracleConnection對象。

當創建 DataAdapter 的實例時,讀/寫屬性將被設置為初始值。有關這些值的列表,請參見 DataAdapter 構造函數

引用来源

外文名
DataAdapter
命名空間
System.Data.Common
用于
DataSet和更新數據源
程序集
System.Data