日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

用DataReader还是DataSet?

發(fā)布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用DataReader还是DataSet? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
作者:Jonathan Goodyear ??????出處:網(wǎng)絡(luò)


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

本文就兩者的選擇問題做了很清楚的講述,可以讓你在運用ASP.NET時,在選擇DataReader類或DataSet類的方面得到一些指南。在基于客戶端的Windows Form應(yīng)用程序環(huán)境下,這些規(guī)則可能會改變。我在做這些講述時,假設(shè)你已經(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ù)庫進行幾個重復(fù)的調(diào)用,來讀取一小塊信息。在這種情況下,我們前面提到過的性能數(shù)據(jù)會有更大的提高。

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



運用DataSet類
在下面的情況,你應(yīng)該考慮運用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ù)。

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

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

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

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



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

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


關(guān)于作者:


Jonathan Goodyear是ASPSoft的總裁,這是個位于Orlando,Fla.的一家Internet咨詢公司。他是位MCSD,是Debugging ASP.NET(New Riders)一書的作者。你可以通過jon@aspsoft.com與他聯(lián)系,或者通過他在www.angryCoder.com上的angryCoder eZine同他聯(lián)系。

總結(jié)

以上是生活随笔為你收集整理的用DataReader还是DataSet?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产美女菊爆在线播放APP | 日韩免费看片 | 久久免费av | 天天操天天草 | 又大又粗又爽18禁免费看 | 一级黄色大片视频 | 大地av| 国产欧美久久久久久 | 亚洲精品一级二级 | hs视频在线观看 | 国产精品情侣自拍 | 色婷婷在线视频 | 日本一区二区三区在线播放 | 国产女厕一区二区三区在线视 | 美女视频三区 | 激情999| 无遮挡在线观看 | 在线成人欧美 | 一区二区精品久久 | av黄色av| 日韩精品一区二区电影 | 亚洲国产日韩在线一区 | 91官网视频 | 国产a视频精品免费观看 | 亚洲麻豆一区二区三区 | 鲍鱼av在线 | 爱爱精品| 熟女视频一区二区三区 | 久久久久无码精品国产sm果冻 | 97av.com| 久久精品国产露脸对白 | 日本婷婷 | 朝鲜一级黄色片 | 亚洲一区二区三区蜜桃 | 嫩草社区 | 亚洲专区在线播放 | 天天干天天色天天射 | 国产精品日韩专区 | 男男毛片 | 国产午夜精品福利视频 | jizz亚洲女人| 中文字幕av高清 | 性做久久久 | 黄色av小说在线观看 | 国产黄视频在线观看 | 亚洲大片免费看 | 国产精品偷拍 | 日本簧片在线观看 | 亚洲婷婷在线视频 | 久久综合婷婷 | 99re5| 婷婷久久丁香 | 另类老妇性bbwbbw图片 | 欧美国产一区二区在线观看 | 91人人澡人人爽 | 日韩 国产 一区 | 日韩久久成人 | 欧美h视频在线观看 | 私拍在线 | 久久久久久一级片 | 久色精品视频 | 嫩模一区 | 特极毛片 | 色午夜 | 欧美日韩成人一区二区在线观看 | 麻豆www.| 日韩av.com | 国产三级国产精品国产国在线观看 | 久一区二区三区 | 欧美骚少妇 | 亚洲男人天堂2022 | 91成品视频 | 偷拍亚洲| 综合天堂av久久久久久久 | av的天堂| 中文字幕9 | 久久久国产网站 | 青青射| 日本不卡高字幕在线2019 | 亚洲AV无码精品久久一区二区 | 欧美熟妇精品一区二区蜜桃视频 | 精品国产网站 | 雷电将军和丘丘人繁衍后代视频 | 96国产视频| 色综合天天综合网天天看片 | 97国产在线播放 | 国产欧美一区二区三区视频 | www.天堂av.com | 女仆裸体打屁屁羞羞免费 | 国产精品分类 | 日本婷婷 | 瑟瑟网站在线观看 | а√天堂中文在线资源8 | 人人干av | 狠色综合7777夜色撩人 | 亚洲成人精品在线观看 | 最新中文字幕在线 | 国产91综合一区在线观看 | 久久爱99|