我的位置: 首頁 > 學習專區 > .NET技術 > DataReader和DataSet的異同

DataReader和DataSet的異同

2012-08-22 13:52:00
來源:
[導讀] DataSet的定義:對象是ADO。NET中非連接存儲和關系型數據處理的基礎數據對象。可以將從數據庫中取得的數據集合全部存儲于DataSet對象中,操
DataSet的定義:對象是ADO。NET中非連接存儲和關系型數據處理的基礎數據對象。可以將從數據庫中取得的數據集合全部存儲于DataSet對象中,操作存儲于DataSet的數據,然后再次連接到數據庫,根據DataSet的數據更新目前數據庫中的數據。

DataSet的主要方法:

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

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

寫了一個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之間建立一個名為a2的DataRelation

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

對象是對數據集合進行向前數條的讀取

DataSet和DataReader都可以完成對數據的操作和存儲

DataReader對數據讀取方便而且快 ,而DataSet有強大的數據庫操作功能和非連接訪問模式

DataReader和DataSet最大的區別:DataReader使用時始終占用SqlConnection,在線操作數據庫..任何對SqlConnection的操作都會引發DataReader的異常..因為DataReader每次只在內存中加載一條數據,所以占用的內存是很小的..因為DataReader的特殊性和高性能.所以DataReader是只進的 讀了第一條后就不能再去讀取第一條了

DataSet則是將數據一次性加載在內存中.拋棄數據庫連接..讀取完畢即放棄數據庫連接..因為DataSet將數據全部加載在內存中.所以比較消耗內存…但是確比DataReader要靈活..可以動態的添加行,列,數據.對數據庫進行回傳更新操作

應用:

1 當需要操作非連接數據,將數據發送到應用程序或客戶端,提供使用者進行更改之后更新數據庫的時候,用DataSet

2 當需要存儲、傳輸、操作多個數據庫表時,并且表之間存在著數據關系時,用DataSet

3 需要對數據進行調度操作時,如:數據分頁瀏覽或跳轉到固定記錄的時候用DataSet

4 當需要一次性讀取數據到客戶端而且沒有更新刪除操作時建議使用DataReader

5 需要遍歷一個數據集,對數據的每條記錄進行只讀時用DataReader

評論
熱點專題
>>
相關文章推薦
>>
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲а∨天堂久久精品高清 | 婷婷琪琪在线中文字幕 | 日韩在线一区天天看 | 亚洲午夜久久久精品影院 | 亚洲中文字幕二区三区 | 在线精品视频一区二区三四 |