DataReader 和 DataSet 的區別

2021-09-11 12:24:35 字數 732 閱讀 3624

1. 獲取資料的方式datareader一次只讀取一行資料,所以占用記憶體較小。但datareader為只進且唯讀的,也就是只能單方向向前讀取,如果你想回頭去讀取上一條資料是不允許的,並且不允許其修改資料。

由於dataset一次性讀取所有資料,所以比較消耗資源,但也提高了靈活性,在斷開資料庫連線情況下你可以對資料進行任何增刪改查,按照任意的順序讀取資料,並可以將其寫回到資料庫。

注意:datareader一次讀取一行並不意味著這時在資料庫中的資料被修改,可以讀到新的資料,這是資料庫層面的保護。

2.獲取資料的機制

datareader是通過idbcommand.executereader來讀取資料。

dataset則是通過dbdataadapter.fill來填充資料。

datareader在獲取資料時不能關閉連線。

dataset可以,因為dbdataadapter已經將資料讀取到應用程式伺服器中,所以在使用datareader時一定要注意,及時關閉連線。

3.其它區別

datareader讀取速度快於dataset。

datareader是資料提供者類,dataset是一般性類,借助於dbdataadapter來填充資料。

因為dataset是離線運算元據,所以在事務中使用鎖時要注意,因為dataset填充資料後會斷開連線,也就會釋放鎖。

抉擇 是用DataReader還是DataSet

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

DataTable和DataReader的遍歷

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

datareader和dataset的區別

dataset是乙個記憶體資料庫,你取資料的時候可以把資料放進去,資料取完就可以斷開連線了,這樣你就可以在dataset中去取資料,和資料庫就無關了。這樣非常方便,但有個問題,你把資料放記憶體裡,是要占用記憶體空間的,如果這個dataset中放了很多資料的話,效率就有問題了,你在乙個大的datase...