ADO.NET讀書筆記系列之------SqlDataAdapter對(duì)象
2024-07-21 02:06:30
供稿:網(wǎng)友
一、特點(diǎn)介紹
1、表示用于填充 dataset 和更新 sql server 數(shù)據(jù)庫(kù)的一組數(shù)據(jù)命令和一個(gè)數(shù)據(jù)庫(kù)連接。
2、在sqldataadapter和dataset之間沒有直接連接。當(dāng)完成sqldataadpater.fill(dataset)調(diào)用后,兩個(gè)對(duì)象之間就沒有連接了。
二、使用介紹
1、創(chuàng)建sqldataadapter
...
string strsql=“select * from customers”;
sqlcommand cmd=new sqlcommand(strsql,cn);
sqldataadapter da=new sqldataadapter();
da.selectcommand=cmd;
2、sqldataadapter構(gòu)造函數(shù)
①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、從查詢中獲取結(jié)果
①使用fill方法
...
sqldataadapter da=new sqldataadapter(strsql,strconn);
dataset ds=new dataset();
da.fill(ds); //這里ds中的表名為table
②使用fill方法創(chuàng)建datatable對(duì)象和datacolumn對(duì)象
...
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”);
④開放和關(guān)閉連接
如果調(diào)用了一個(gè)sqldataadapter對(duì)象的fill方法,而selectcommand屬性的connection關(guān)閉了,那么sqldataadapter就會(huì)開放一個(gè)連接,然后提交查詢、獲取結(jié)果、最后關(guān)閉連接。如果在調(diào)用前開放了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();
⑤多次調(diào)用fill方法
刷新dataset中的數(shù)據(jù),最簡(jiǎn)單的解決方法就是清空dataset(或datatable),然后再次調(diào)用dataadapter對(duì)象的fill方法。
三、屬性方法事件介紹
1、屬性
①acceptchangeduringfill:確定由dataadapter所獲取的行的rowstate(默認(rèn)為true)。
②deletecommand:獲取或設(shè)置一個(gè) transact-sql 語(yǔ)句或存儲(chǔ)過(guò)程,以從數(shù)據(jù)集刪除記錄。
③insertcommand:獲取或設(shè)置一個(gè) transact-sql 語(yǔ)句或存儲(chǔ)過(guò)程,以在數(shù)據(jù)源中插入新記錄。
④selectcommand:獲取或設(shè)置一個(gè) transact-sql 語(yǔ)句或存儲(chǔ)過(guò)程,用于在數(shù)據(jù)源中選擇記錄。
⑤updatecommand:獲取或設(shè)置一個(gè) transact-sql 語(yǔ)句或存儲(chǔ)過(guò)程,用于更新數(shù)據(jù)源中的記錄。
⑥tablemappings:sqldataadapter用來(lái)將查詢的結(jié)果映射到dataset的信息集合。
⑦continueupdate:控制sqldataadapter在遇到一個(gè)錯(cuò)誤之后是否繼續(xù)提交更改(默認(rèn)為false)。
2、方法
①fill:執(zhí)行存儲(chǔ)于selectcommand中的查詢,并將結(jié)果存儲(chǔ)在datatable中。
②fillschema:為存儲(chǔ)在selectcommand中存儲(chǔ)的查詢獲取架構(gòu)信息。獲取查詢中的各列名稱和數(shù)據(jù)類型。
③getfillparameters:為selectcommand獲取一個(gè)包含著參數(shù)的數(shù)組。
④update:向數(shù)據(jù)庫(kù)提交存儲(chǔ)在dataset(或datatable、datarows)中的更改。該方法會(huì)返回一個(gè)整數(shù)值,其中包含著在數(shù)據(jù)存儲(chǔ)中成功更新的行數(shù)。
3、事件
①fillerror:當(dāng)dataadapter遇到填充dataset或datatable的一個(gè)錯(cuò)誤時(shí),該事件被觸發(fā)。
②rowupdated:向數(shù)據(jù)庫(kù)提交一個(gè)修改的行之后被觸發(fā)。
③rowupdating:向數(shù)據(jù)庫(kù)提交一個(gè)修改的行之前被觸發(fā)。