- 透視C#核心技術:系統架構及移動端開發
- 馮軍編著
- 1252字
- 2021-07-08 12:02:02
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往客戶表中添加一條記錄。


- Learn Type:Driven Development
- Java Web基礎與實例教程(第2版·微課版)
- Mastering SVG
- Selenium Design Patterns and Best Practices
- R語言游戲數據分析與挖掘
- GitLab Repository Management
- Oracle數據庫從入門到運維實戰
- 網絡爬蟲原理與實踐:基于C#語言
- Mastering Google App Engine
- Python忍者秘籍
- Unity 2018 Shaders and Effects Cookbook
- 零基礎學C語言第2版
- 大話Java:程序設計從入門到精通
- Everyday Data Structures
- Java Web開發教程:基于Struts2+Hibernate+Spring