編者注】是用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只傳送網頁中需要傳送的資料和接收需要接收的資料等等都是精確化的表現!