<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 在ASP.NETWeb應用程序中我應該用DataReader類還是Dat

    時間:2024-10-13 22:49:12 ASP 我要投稿
    • 相關推薦

    在ASP.NETWeb應用程序中我應該用DataReader類還是DataSet類

      ADO.NET提供了兩個主要的類來讀取數據。通過本文我們可以學習如何在兩者之間進行選擇。

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

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

      運用DataReader類

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

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

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

      你計劃對數據庫進行幾個重復的調用,來讀取一小塊信息。在這種情況下,我們前面提到過的性能數據會有更大的提高。的確,使DataSet類更強大的許多功能只適用于基于客戶端的WindowsForm應用程序,比如在多個表之間建立關系的功能。在很多情況下,DataSet類都比DataReader類更有優勢,而且在有些情況下,你根本就不能用DataReader類。

      運用DataSet類

      在下面的情況,你應該考慮運用DataSet類:你構建了一個Webservice,它運用的數據是你作為返回值讀取的數據。因為DataReader類必須保持到數據庫的連接,所以它們不能被序列化到XML中,也不能被發送給一個Webservice的調用者。

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

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

      你需要存儲數據,而后續的頁面請求可能會用到的這些數據。如果數據只被請求它的專門的人使用,你可以將DataSet類保存在一個Session變量中。如果數據可以被任何人訪問,那么你可以將它保存在一個Application變量中,或保存在Cache中(我建議使用后一種方法,因為它支持時間期限和回調(callback))。因為DataReader類必須一直打開對數據庫的連接,而且它一次只能保存一行數據,所以它們不能在跨頁面請求中被保存。

      你需要對一個結果集的每個元素實現特殊的、耗時的功能。例如,如果你從一個數據庫讀取一列郵政編碼,并想通過調用一個Webservice來得到每個地區的詳細的天氣狀況信息,那么選擇DataSet就會更好。這是因為,當你在用DataReader類時,在關閉DataReader類前,與數據庫的連接不會被釋放回連接池。在數千頁面請求之間潛在的一個很小的延時都會造成Web應用程序的很高的訪問量,從而就會消耗完可用的連接。相反,DataSet可以在前端讀取所有的數據,并可以馬上關閉與數據庫的連接,將它返回到連接池,因此其它的頁面請求就可以用這個連接了。

      你需要在一個兩維范例中加載并處理XML數據。DataSet類對于XML很有用,因為你可以將DataView用于XML,對根本的數據進行排序和篩選,就同處理一個數據庫結果集一樣。然而,需要注意的是在System.Xml名字空間中有很多類,你可以將它們用于更復雜的XML操作。

      你的數據源不是一個數據庫。雖然OleDbDataReader可以用于任何OLEDB數據提供者(可能指向一個數據庫,也可能不指向一個數據庫),但DataSet對象可以從一個XML文件直接加載數據,并動態地解釋它的schema。DataSet類也可以將XML數據寫回一個數據流或一個文件。

      從上面的講述我們就可以看到,DataSet類比DataReader類有更多的功能,這就可以讓你在更多的情況下運用它們。但這并不意味著你總是在用DataSet類。你需要在ASP.NET中完成的相當大一部分的任務都屬于DataReader的范疇。

      盡管如此,毫無疑問,從重要程度或復雜程度的角度來說,DataSet類在很多ASP.NETWeb應用程序中都起著很重要的作用。你可以通過明智的緩存來最小化數據庫往返,從而降低DataSet類的“性能損害”。DataReader和DataSet都是一個成功的ASP.NETWeb應用程序的重要的部件。重要的是,我們需要了解何時、在哪里可以最好的使用它們。

    【在ASP.NETWeb應用程序中我應該用DataReader類還是Dat】相關文章:

    素描應該用鉛筆還是炭筆10-04

    荷蘭留學選擇H類大學還是U類大學08-22

    演講中應如何把持好場面08-18

    員工在激勵中應如何得到薪酬?09-04

    平面設計中應注意的美學10-17

    PHP中關于類的定義10-02

    演講和社交中應注意的面部表情09-21

    員工激勵過程中應注意的問題12-01

    挖掘機駕駛中應注意的問題08-12

    2016中小企業應具備的戰略觀06-02

    主站蜘蛛池模板: 久久精品国产亚洲av水果派| 四虎影视永久在线精品免费| 国内精品久久久久久中文字幕 | 国产精品狼人久久久久影院 | 热久久国产精品| 国产精品白浆在线观看免费| 久久丝袜精品中文字幕| 99精品热这里只有精品| 免费视频精品一区二区| 成人国产精品999视频| 欧洲精品码一区二区三区免费看| 在线精品视频一区二区| 国产精品美女一区二区视频 | 国产精品嫩草影院AV| 久久精品国产99国产精品| 国产福利91精品一区二区| 中文字幕av日韩精品一区二区| 国产精品亚洲精品日韩已方| 久久精品嫩草影院| 无码国模国产在线无码精品国产自在久国产 | 国产精品九九九| 99久久成人国产精品免费| 亚洲精品午夜国产VA久久成人| 精品亚洲欧美无人区乱码| 日韩欧国产精品一区综合无码| 99re6在线视频精品免费| 在线成人精品国产区免费| 久久精品国产亚洲Aⅴ蜜臀色欲| 93精91精品国产综合久久香蕉| 久久精品国产精品青草app| 国产精品久久久久久| 精品在线免费观看| 久久亚洲精品无码播放| 久久精品无码一区二区三区| 国产成人精品电影在线观看| 久久久久久九九99精品| 亚洲精品色婷婷在线影院| 精品国产午夜福利在线观看 | 久久久无码人妻精品无码| 麻豆国产精品VA在线观看不卡| 国产在线国偷精品免费看|