国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

DataReader還是DataSet哪個好?

來源:北大青鳥飛迅校區(qū)|發(fā)布時間:2013-05-02 10:39:24

      我經(jīng)常聽到有人問這個問題:“在ASP.NET Web應用程序中我應該用DataReader類還是DataSet類呢?”在很多文章以及新聞組的貼子中我經(jīng)?吹竭@樣的誤解,即認為DataReader(SqlDataReader或OleDbDataReader的縮寫)比DataSet好。有時候我也會看到相反的說法。事實上,Microsoft創(chuàng)建了這兩個數(shù)據(jù)存取類是因為它們都是我們所需要的。每個類都有其優(yōu)點和不足,你可以根據(jù)應用環(huán)境來選擇用哪一個。

      本文就兩者的選擇問題做了很清楚的講述,可以讓你在運用ASP.NET時,在選擇DataReader類或DataSet類的方面得到一些指南。在基于客戶端的Windows Form應用程序環(huán)境下,這些規(guī)則可能會改變。我在做這些講述時,假設你已經(jīng)用過DataReader和DataSet類了,并對它們很熟悉。

運用DataReader類

      下面就是運用DataReader類的理想條件: 你讀取的數(shù)據(jù)必須是新的,所以在每次需要數(shù)據(jù)的時候,你都必須從數(shù)據(jù)庫讀取。創(chuàng)建一個DataReader類不會消耗很多內(nèi)存,不過隨著負荷的增加,DataSet上的性能也會很快地提高(參考資源中Visual Studio Magazine中的文章)。

      你對每行數(shù)據(jù)的需求很簡單。該情況的最好的例子就是簡單地將DataReader綁定到一個Web控件,如DataGrid或DropDownList。

      你只需要從數(shù)據(jù)庫中以只向前的(forward-only) 、只讀的形式來存取XML數(shù)據(jù)。在這種情況下,你可以用SQLCommand對象的ExcecuteXmlReader()方法來得到一個XmlReader類(相當于XML版的DataReader)。這就需要一個運用FOR XML子句的SQL Server查詢,或者一個包含有效XML的ntext字段。

      你計劃對數(shù)據(jù)庫進行幾個重復的調(diào)用,來讀取一小塊信息。在這種情況下,我們前面提到過的性能數(shù)據(jù)會有更大的提高。

      的確,使DataSet類更強大的許多功能只適用于基于客戶端的Windows Form應用程序,比如在多個表之間建立關(guān)系的功能。在很多情況下,DataSet類都比DataReader類更有優(yōu)勢,而且在有些情況下,你根本就不能用DataReader類。

運用DataSet類

   在下面的情況,你應該考慮運用DataSet類: 你構(gòu)建了一個Web service,它運用的數(shù)據(jù)是你作為返回值讀取的數(shù)據(jù)。因為DataReader類必須保持到數(shù)據(jù)庫的連接,所以它們不能被序列化到XML中,也不能被發(fā)送給一個Web service的調(diào)用者。

      你需要排序或篩選數(shù)據(jù)。在運用一個DataView對象(呈現(xiàn)為DataTable類的DefaultView屬性,它包含一個DataSet類)來排序或篩選數(shù)據(jù)前,我們先試著用SQL查詢(如WHERE和ORDER BY語句)來實現(xiàn)這些功能,并運用更輕量級、更快的DataReader類。然而,有時侯用這種方法是不行的,或者當你需要多次地對數(shù)據(jù)進行排序或篩選時就不能用DataReader。

      針對同一請求,你需要多次遍歷數(shù)據(jù)。你只能在DataReader中循環(huán)一次。如果你想將多個ServerControl類綁定到同一個數(shù)據(jù)集,那么選擇DataSet就更好。DataReader類不能被綁定到多個ServerControl類,因為它是只向前讀取的。在這種情況下,如果要使用DataReader,必須從數(shù)據(jù)庫讀取兩次數(shù)據(jù)。

上一篇:在C#程序設計中使用Win32類庫
下一篇:怎么觸發(fā)Asp.net中服務端控件事件

熱門話題

招生熱線: 4008-0731-86 / 0731-82186801

學校地址: 長沙市天心區(qū)團結(jié)路6號

Copyright © 2006 | 湖南大計信息科技有限公司 版權(quán)所有

湘ICP備14017520號-3

關(guān)注我們
在線咨詢
嘿,我來幫您!