DataReader與Dataset有什麼區別?

2021-07-06 05:57:13 字數 1101 閱讀 7117

第一種解釋

dataset則是將資料一次性載入在記憶體中.拋棄資料庫連線..讀取完畢即放棄資料庫連線..因為dataset將資料全部載入在記憶體中.所以比較消耗記憶體...但是確比datareader要靈活..可以動態的新增行,列,資料.對資料庫進行回傳更新操作...

第二種解釋

使用datareader與dataset都可以從資料來源讀取資料。datareader本身是通過idbcommand.executereader()方法進行構建的;而dataset則是通過dbdataadapter.fill()方法進行填充。此外,兩者的工作方式有明顯的不同:datareader的執行過程不能脫離資料庫連線,也就是在datareader讀取資料的時候不能夠使用idbconnection.close()方法關閉資料庫連線;而在使用dataset獲取資料時,可以斷開資料庫的連線(具體請參加微軟提供的相關的演示文件),因為此時dbdataadapter已經負責將資料獲取到應用伺服器中了。

由於有這樣的區別,所以在開發資料庫相關程式時需要特別注意。例如在使用datareader獲取資料後,應該主動地關閉資料庫連線,否則可能出現資料庫連線池溢位的異常。

第三種解釋

可以使用datareader類的物件或dataset類的物件從資料庫讀取資料,但它們是有區別的,歸納起來大致有以下幾條:

1. datareader是資料管理提供者類,而dataset是一般性資料類。

2. dataset獲取資料需要通過橋梁dataadapter的填充,由於datareader本身就是管理提供者,它可以通過command的executereader()方法就可以獲取資料。

4. datareader只能正向讀取資料,但不能修改資料;dataset可以按任何順序讀行,可以按靈活的方式搜尋、排序和過濾這些行,甚至可以改變這些行,然後將這些改變同步到資料庫中。

5. 從datareader讀取資料的速度快於dataset。

6. 由於dataset是離線處理,所以當在事務處理中要鎖定資料庫是,不可以使用dataset。因為當dataset被填充以後,會自動斷開與資料庫的連線,此時不可能再對資料庫進行鎖定。

可以看出,在通常情況下,dataset與 datareader可能可以相互代替,當有特定要求時卻需要仔細分析,到底使用哪種方式更合適。

抉擇 是用DataReader還是DataSet

ado.net提供了兩個主要的類來讀取資料。通過本文我們可以學習如何在兩者之間進行選擇。我 經常聽到有人問這個問題 在asp.net web應用程式中我應該用datareader類還是dataset類呢?在很多文章以及新聞組的貼子中 我經常看到這樣的誤解,即認為datareader sqldatar...

DataReader物件與資料獲取

datareader物件與資料獲取 datareader物件以 基於連線 的方式來訪問資料庫。也就是說,在訪問資料庫 執行sql操作時,datareader要求一直連在資料庫上。這將會給資料庫的連線負載帶來一定的壓力,但datareader物件的工作方式將在很大程度上減輕這種壓力。1 datarea...

DataTable和DataReader的遍歷

1 datatable的遍歷 建立資料表 datatable dt getdatatable select from student 儲存資料 stringbuilder sb new stringbuilder 迴圈遍歷 逐行遍歷 foreach datarow row in dt.rows 獲取...