招生熱線
0755-86191118 0755-86191118
我的位置: 首頁(yè) > 學(xué)習(xí)專區(qū) > .NET技術(shù) > DataReader和DataSet的異同

DataReader和DataSet的異同

2012-08-22 13:52:00
來(lái)源:
[導(dǎo)讀] DataSet的定義:對(duì)象是ADO。NET中非連接存儲(chǔ)和關(guān)系型數(shù)據(jù)處理的基礎(chǔ)數(shù)據(jù)對(duì)象。可以將從數(shù)據(jù)庫(kù)中取得的數(shù)據(jù)集合全部存儲(chǔ)于DataSet對(duì)象中,操
DataSet的定義:對(duì)象是ADO。NET中非連接存儲(chǔ)和關(guān)系型數(shù)據(jù)處理的基礎(chǔ)數(shù)據(jù)對(duì)象。可以將從數(shù)據(jù)庫(kù)中取得的數(shù)據(jù)集合全部存儲(chǔ)于DataSet對(duì)象中,操作存儲(chǔ)于DataSet的數(shù)據(jù),然后再次連接到數(shù)據(jù)庫(kù),根據(jù)DataSet的數(shù)據(jù)更新目前數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

DataSet的主要方法:

1、Clear:清空DataSet的所有DataTable 2 Merge把兩個(gè)DataSet合并成一個(gè) 3 AcceptChanges 更新對(duì)DataSet的所有更改 4 GetChanges獲得對(duì)DataSet進(jìn)行的所有更改 5 HasChanges 判斷是否有對(duì)DataSet進(jìn)行更改 6 放棄對(duì)DataSet對(duì)數(shù)據(jù)庫(kù)進(jìn)行的更改

對(duì)象:1 DataTable 記錄集(相當(dāng)于表) 2 DataColumn 記錄集的字段(相當(dāng)于列) 3 DataRow 記錄(相當(dāng)于行)4 DataView 數(shù)據(jù)視圖,是基于DataSet對(duì)象中數(shù)據(jù)的查詢條件的。5 DataRelation 定義不同DataTable 之間的關(guān)系

寫了一個(gè)DataSet的代碼清單

DataSet ds=new DataSet();

DataTable dt1=new DataTable();

DataTable dt2=new DataTable();

DataColumn dc1=new DataColumn(“a1″,typeof(int));

DataColumn dc1=new DataColumn(“a2″,typeof(int));

DataColumn dc1=new DataColumn(“a2″,typeof(int));

DataColumn dc1=new DataColumn(“a3″,typeof(int));

dt1.Column.Add(dc1);

dt1.Column.Add(dc2);

dt2.Column.Add(dc2);

dt2.Column.Add(dc3);

ds.Tables.Add(dt1);

ds.Tables.Add(dt2);

//在dt1和dt2之間建立一個(gè)名為a2的DataRelation

ds.Relation.Add(“a2″,ds.Tables["dt1"].Column["a2"],Tables["dt2"].Column["a2"]);

對(duì)象是對(duì)數(shù)據(jù)集合進(jìn)行向前數(shù)條的讀取

DataSet和DataReader都可以完成對(duì)數(shù)據(jù)的操作和存儲(chǔ)

DataReader對(duì)數(shù)據(jù)讀取方便而且快 ,而DataSet有強(qiáng)大的數(shù)據(jù)庫(kù)操作功能和非連接訪問模式

DataReader和DataSet最大的區(qū)別:DataReader使用時(shí)始終占用SqlConnection,在線操作數(shù)據(jù)庫(kù)..任何對(duì)SqlConnection的操作都會(huì)引發(fā)DataReader的異常..因?yàn)镈ataReader每次只在內(nèi)存中加載一條數(shù)據(jù),所以占用的內(nèi)存是很小的..因?yàn)镈ataReader的特殊性和高性能.所以DataReader是只進(jìn)的 讀了第一條后就不能再去讀取第一條了

DataSet則是將數(shù)據(jù)一次性加載在內(nèi)存中.拋棄數(shù)據(jù)庫(kù)連接..讀取完畢即放棄數(shù)據(jù)庫(kù)連接..因?yàn)镈ataSet將數(shù)據(jù)全部加載在內(nèi)存中.所以比較消耗內(nèi)存…但是確比DataReader要靈活..可以動(dòng)態(tài)的添加行,列,數(shù)據(jù).對(duì)數(shù)據(jù)庫(kù)進(jìn)行回傳更新操作

應(yīng)用:

1 當(dāng)需要操作非連接數(shù)據(jù),將數(shù)據(jù)發(fā)送到應(yīng)用程序或客戶端,提供使用者進(jìn)行更改之后更新數(shù)據(jù)庫(kù)的時(shí)候,用DataSet

2 當(dāng)需要存儲(chǔ)、傳輸、操作多個(gè)數(shù)據(jù)庫(kù)表時(shí),并且表之間存在著數(shù)據(jù)關(guān)系時(shí),用DataSet

3 需要對(duì)數(shù)據(jù)進(jìn)行調(diào)度操作時(shí),如:數(shù)據(jù)分頁(yè)瀏覽或跳轉(zhuǎn)到固定記錄的時(shí)候用DataSet

4 當(dāng)需要一次性讀取數(shù)據(jù)到客戶端而且沒有更新刪除操作時(shí)建議使用DataReader

5 需要遍歷一個(gè)數(shù)據(jù)集,對(duì)數(shù)據(jù)的每條記錄進(jìn)行只讀時(shí)用DataReader

評(píng)論
相關(guān)文章
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲字幕中文在线乱码AV | 亚洲中文欧美日韩在线 | 亚洲精品中文字幕制服丝袜 | 伊人色综合久久天天小片 | 亚洲成a人v在线观看 | 亚洲2020最新视频在线 |