ADO.NET讀書筆記系列之------SqlDataAdapter對象
2024-07-21 02:06:30
供稿:網友
一、特點介紹
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);
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:向數據庫提交一個修改的行之前被觸發。