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