From: http://blog.sobnb.com/u/92/5532.html
一、特點介紹
1、表示用于填充 DataSet 和更新 SQL Server 資料庫的一組資料指令和一個資料庫連接配接。
2、在SqlDataAdapter和DataSet之間沒有直接連接配接。 當完成SqlDataAdpater.Fill(DataSet)調用後,兩個對象之間就沒有連接配接了。
******
SqlDataAdapter的Fill方法調用前不需要有活動的SqlConnection對象,SqlDataAdapter會自己打開strConn語句中的資料庫,擷取查詢結果後,關閉與資料庫的連接配接。如果已經存在SqlConnection對象,無論是否已經打開,SqlDataAdapter執行完Fill方法後,均會将SqlConnection對象傳回到原始狀态。
當程式中的多個SqlDataAdapter對象使用都一個SqlConnection對象時,為避免多次打開與關閉SqlConnection對象,應該在調用SqlDataAdapter的Fill方法前調用SqlConnection的Open方法打開資料庫的連接配接,待完成Fill調用後再調用SqlConnection的Close方法關閉資料庫的連接配接。
******
二、使用介紹
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);
// 讓ds.Tables[0].TableName為 Customers
da.TableMapping.Add(“Table”,“Customers”);
DataSet ds=new DataSet();
da.Fill(ds);
③使用重載Fill方法
SqlDataAdapter.Fill(DataSet,“Customers”);
SqlDataAdapter.Fill(DataTable);
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的一個錯誤時,該事件被觸發。
②RowUpdated:向資料庫送出一個修改的行之後被觸發。
③RowUpdating:向資料庫送出一個修改的行之前被觸發。
轉載于:https://www.cnblogs.com/nliao/archive/2012/11/18/2775848.html