一、特點介紹
1、表示用於填充 DataSet 和更新 SQL Server 數據庫的一組數據命令和一個數據庫連接。
2、在SqlDataAdapter和DataSet之間沒有直接連接。當完成SqlDataAdpater.Fill(DataSet)調用後,兩個對象之間就沒有連接了。
二、使用介紹
1、創建SqlDataAdapter
……
string strSQL=“Select * from Customers”;
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=cmd;
2、SqlDataAdapter構造函數
①string strConn=“Provider=……”;
string strSQL=“select * from Customers”;
SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
②string strConn=“Provider=……”;
SqlConnection cn=new SqlConnection(strConn);
SqlDataAdapter da=new SqlDataAdapter(“select * from Customers”,cn);
③string strConn=“Provider=……”;
string strSQL=“select * from Customers”;
SqlConnection cn=new SqlConnection(strConn);
SqlCommand cmd=new SqlCommand(strSQL,cn);
SqlDataAdapter da=new SqlDataAdapter(cmd);
3、從查詢中獲取結果
①使用Fill方法
……
SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
DataSet ds=new DataSet();
da.Fill(ds); //這裡ds中的表名為Table
②使用Fill方法創建DataTable對象和DataColumn對象
……
SqlDataAdapter da=new SqlDataAdapter(strSQL,strConn);
da.TableMapping.Add(“Table”,“Customers”);
DataSet ds=new DataSet();
da.Fill(ds);
③使用重載Fill方法
SqlDataAdapter.Fill(DataSet,“Customers”);
SqlDataAdapter.Fill(DataTable); [Page]
SqlDataAdapter.Fill(DataSet,intStartRecord,intNumRecords,“TableName”);
④開放和關閉連接
如果調用了一個SqlDataAdapter對象的Fill方法,而SelectCommand屬性的Connection關閉了,那麼SqlDataAdapter就會開放一個連接,然後提交查詢、獲取結果、最後關閉連接。如果在調用前開放了Connection,那麼操作之後仍然保持開放。
……
SqlDataAdapter daCustomers,daOrders;
daCustomers=new SqlDataAdapter(“Select * from Customers”,cn);
daOrders=new SqlDataAdapter(“Select * from Orders”,cn);
DataSet ds=new DataSet();
cn.Open();
daCustomers.Fill(ds);
daOrders.Fill(ds);
cn.Close();
⑤多次調用Fill方法
刷新DataSet中的數據,最簡單的解決方法就是清空DataSet(或DataTable),然後再次調用DataAdapter對象的Fill方法。
三、屬性方法事件介紹
1、屬性
①AcceptChangeDuringFill:確定由DataAdapter所獲取的行的RowState(默認為True)。
②DeleteCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,以從數據集刪除記錄。
③InsertCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,以在數據源中插入新記錄。
④SelectCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,用於在數據源中選擇記錄。
⑤UpdateCommand:獲取或設置一個 Transact-SQL 語句或存儲過程,用於更新數據源中的記錄。
⑥TableMappings:SqlDataAdapter用來將查詢的結果映射到DataSet的信息集合。
⑦ContinueUpdate:控制SqlDataAdapter在遇到一個錯誤之後是否繼續提交更改(默認為false)。
2、方法
①Fill:執行存儲於SelectCommand中的查詢,並將結果存儲在DataTable中。
②FillSchema:為存儲在SelectCommand中存儲的查詢獲取架構信息。獲取查詢中的各列名稱和數據類型。
③GetFillParameters:為SelectCommand獲取一個包含著參數的數組。
④Update:向數據庫提交存儲在DataSet(或DataTable、DataRows)中的更改。該方法會返回一個整數值,其中包含著在數據存儲中成功更新的行數。
3、事件
①FillError:當DataAdapter遇到填充DataSet或DataTable的一個錯誤時,該事件被觸發。 [Page]
②RowUpdated:向數據庫提交一個修改的行之後被觸發。
③RowUpdating:向數據庫提交一個修改的行之前被觸發。
==============================================
DbDataAdapter.Fill 方法
名稱 說明
DbDataAdapter.Fill (DataSet) 在 DataSet 中添加或刷新行以匹配使用 DataSet 名稱的數據源中的行,並創建一個名為“Table”的 DataTable。
DbDataAdapter.Fill (DataTable) 在 DataSet 的指定范圍中添加或刷新行以匹配使用 DataSet、DataTable 和 IDataReader 名稱的數據源中的行。
DbDataAdapter.Fill (DataSet, String) 在 DataSet 中添加或刷新行以匹配使用 DataSet 和 DataTable 名稱的數據源中的行。
DbDataAdapter.Fill (DataTable, IDataReader) 在 DataSet 中添加或刷新行以匹配使用 DataSet 名稱的數據源中的行,並創建一個 DataTable。
DbDataAdapter.Fill (DataTable, IDbCommand, CommandBehavior) 在 DataTable 中添加或刷新行以匹配使用指定 DataTable 和 IDataReader 名稱的數據源中的行。
DbDataAdapter.Fill (Int32, Int32, DataTable[]) 在 DataTable 中添加或刷新行以匹配使用 DataTable 名稱、指定的 SQL SELECT 語句和 CommandBehavior 的數據源中的行。
DbDataAdapter.Fill (DataSet, Int32, Int32, String) 在 DataSet 的指定范圍中添加或刷新行以匹配使用 DataSet 和 DataTable 名稱的數據源中的行。
DbDataAdapter.Fill (DataTable[], IDataReader, Int32, Int32) 在 DataSet 中添加或刷新行以匹配使用 DataSet 名稱的數據源中的行,並創建一個 DataTable。
DbDataAdapter.Fill (DataSet, String, IDataReader, Int32, Int32) 在 DataSet 中添加或刷新行以匹配使用 DataSet 名稱的數據源中的行,並創建一個 DataTable。
DbDataAdapter.Fill (DataTable[], Int32, Int32, IDbCommand, CommandBehavior) 在 DataSet 的指定范圍中添加或刷新行以匹配使用 DataSet 和 DataTable 名稱的數據源中的行。
DbDataAdapter.Fill (DataSet, Int32, Int32, String, IDbCommand, CommandBehavior) 使用 DataSet 和源表名稱、命令字符串以及命令行為,在 DataSet 的指定范圍中添加或刷新某些行以使它們與數據源中對應的行相一致。