官术网_书友最值得收藏!

2.5 DataAdapter對象

DataAdapter對象是DataSet與數據源之間檢索和更新數據的橋梁,每個DataAdapter都在DataSet中的單個DataTable對象和SQL語句或存儲過程所產生的結果集之間交換數據。我們可以使用DataAdpater在數據源和DataSet之間交換數據。

2.5.1 DataAdapter對象的常用屬性

DataAdapter對象有兩種工作方式,一種為通過Command對象執行SQL語句,將獲得的結果集填充到DataSet對象中;另一種為將DataSet里的數據結果更新到數據庫中。

使用DataAdapter對象,可以增加、修改、刪除和查詢數據源中的記錄。

對于每種操作的執行方式,適配器支持InsertCommand、DeleteCommand、)UpdateCommand和SelectCommand 4個屬性,類型都是Command,分別用來管理數據的“增”“刪”“改”“查”動作。

1)InsertCommand屬性:用于向數據庫中增加數據。

2)DeleteCommand屬性:用于刪除數據庫中的數據。

3)UpdateCommand屬性:用于修改數據庫中的數據。

4)SelectCommand屬性:用于從數據庫中檢索數據。

下列代碼將創建一個SqlCommand對象并賦值給SelectCommand屬性。

我們同樣可以使用上述方式為InsertCommand、DeleteCommand和UpdateCommand屬性賦值。

當使用DataAdapter對象的SelectCommand屬性獲得數據表的數據時,如果表中有主鍵,就可以使用CommandBuilder對象來自動為這個DataAdapter對象隱形地生成其他3個屬性,即InsertCommand、DeleteCommand和UpdateCommand屬性。這樣,在修改數據后,可以直接調用Update將修改后的數據更新到數據庫中,而不必使用InsertCommand、DeleteCommand和UpdateCommand來執行更新操作。

2.5.2 DataAdapter對象的常用方法

DataAdapter對象主要用于從數據源中檢索數據并填充到DataSet中,以及把DataSet里的數據更新到數據庫,同樣有SqlDataAdapter、OleDbDataAdapter、OdbcDataAdapter和OracleDataAdapter四種對象,它們的方法也類似。本小節將以SqlDataAdapter()為例,講解DataAdapter的常用方法。

1. 構造函數

(1)SqlDataAdapter()

初始化SqlDataAdapter類的新實例。

(2)SqlDataAdapter(System.Data.SqlClient.SqlCommand selectCommand)

用指定的SqlCommand作為SelectCommand的屬性初始化SqlDataAdapter的新實例,參數如下。

一個SqlCommand(SELECT語句或存儲過程),已設置為SelectCommand的SqlData Adapter屬性。

(3)SqlDataAdapter(string selectCommandText,System.Data.SqlClient.SqlConnection selectConnection)

用selectCommand Text和sqlConnection對象初始化SqlDataAdapter類的新實例,參數如下。

一個字符串,它是將要由SelectCommand的SqlDataAdapter屬性使用的SELECT語句或存儲過程。

表示該連接的SqlConnection。如果連接字符串不使用Integrated Security=true,則可以使用SqlCredential來傳遞用戶ID和密碼,這比將用戶ID和密碼指定為連接字符串中的文本更安全。

(4)SqlDataAdapter(string selectCommandText,string selectConnectionString)

用selectCommand Text和連接字符串初始化SqlDataAdapter類的新實例,參數如下。

一個字符串,它是將要由SelectCommand的SqlDataAdapter屬性使用的SELECT語句或存儲過程。

連接字符串。如果連接字符串不使用Integrated Security=true,比在連接字符串的文本中指定用戶ID和密碼更安全的方式是使用SqlDataAdapter(String,SqlConnection)和SqlCredential通過用戶ID和密碼。

2. Fill方法

當調用Fill方法時,它將向數據存儲區傳輸一條SQL SELECT語句。該方法主要用來填充或刷新DataSet,返回值是影響DataSet的行數。該方法的常用定義如下。

(1)int Fill(System.Data.DataSet dataSet)

添加或刷新數據集中的行,參數如下。

Dataset:一個數據集,用于填充記錄。

(2)int Fill(DataSet dataset,string srcTable)

使用數據集和數據表名稱添加或刷新數據集中的行,以匹配數據源中的行,參數如下。

dataSet:一個數據集,用于填充記錄。

srcTable:用于表映射的源表的名稱。例如sqlDataAdapter.fill(DataSet,"tCustomer"),指定后就可以這樣調用這張表DataSet.Tables["tCustomer"]。第二個參數可以不要,如果不要第二個參數,那么調用這張表則只能通過索引號,如DataSet.Tables[0]。

3. Update方法

當程序調用Update方法時,DataAdapter將檢查DataSet中每一行的RowState屬性,根據該屬性來檢查DataSet里的每行是否改變及改變的類型,并依次執行所需的INSERT、UPDATE或DELETE語句,將改變提交到數據庫中。該方法返回的結果會影響DataSet的行數,下列代碼將通過DataAdapter往客戶表中添加一條記錄。

主站蜘蛛池模板: 临高县| 津南区| 明光市| 海伦市| 博罗县| 新野县| 辰溪县| 马龙县| 名山县| 启东市| 阳城县| 恩平市| 措勤县| 左云县| 永德县| 东丰县| 稻城县| 沐川县| 昌吉市| 道孚县| 花垣县| 青浦区| 香河县| 康平县| 浑源县| 同仁县| 临武县| 江源县| 丰顺县| 沙洋县| 朔州市| 苍南县| 乳源| 安丘市| 饶阳县| 西华县| 错那县| 九江县| 华宁县| 海城市| 济宁市|