是用DataReader,還是用DataSet呢
【編者注】是用DataReader,還是用DataSet?首先要知道他們之間的有什么異同,以及適用的工作環境有什么不同。在了解了這方面的信息后,何時用哪個,也就迎刃而解了。 以下筆者為大家提供了區分的方法。
網上收集了一下,用DataReader還是DataSet,下面的答案講的很清楚
使用DataReader與DataSet都可以從數據源讀取數據。
DataReader本身是通過 IDbCommand.ExecuteReader()方法進行構建的;
而DataSet則是通過DbDataAdapter.Fill()方法進行填充。
此外,兩者的工作方式有明顯的不同:
DataReader的執行過程不能脫離數據庫連接,也就是在DataReader讀取數據的時候不能夠使用 IDbConnection.Close()方法關閉數據庫連接;
而在使用DataSet獲取數據時,可以斷開數據庫的連接,因為此時 DbDataAdapter已經負責將數據獲取到應用服務器中了。
如果數據量小,網站也小,那么用哪個都無所謂,訪問頻繁的話就需要使用DataSet了,因為有一個連接的問題.
在網絡運用中:
reader必須是在Connection下在狀態才能用的,所以組件返回以DataSet為好.
這就是為什么web service允許返回dataset而不是datareader
reader會霸占連接資源,所以不是很方便的。dataset是非連接的數據庫訪問機制.
測試結果時DataSet要比DataReader慢一些的,差好幾倍,但易用度來講還是DataSet好一些.
二者適用的環境不一樣,這要看你數據綁定的目的而定:
如果是為了單純地顯示給客戶端瀏覽,或者只是為了在程序中對某些條件進行判斷以決定程序的執行流程,那用DataReader就比較好;
如果需要對顯示結果進行編輯或修改,并提交到后臺數據庫已保存這些改變,那就應該毫不猶豫地選擇DataSet。
另外,如果dataset讀取數據的過程需要連接,則可以重新進行綁定,綁定的條件可以依據客戶端的選擇或者根據PageIndex類似的屬性一綁定,你實際需要的數據而不是整個數據表。
我個人感覺,都是向著精確化的方向發展,BT的傳送文件方式,數據的小片讀取,大圖片文件部分讀取傳輸技術,ajax只傳送網頁中需要傳送的數據和接收需要接收的數據等等都是精確化的表現!
原文鏈接:http://www.cnblogs.com/angestudy/archive/2011/04/13/2015510.html
【編輯推薦】