国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

DataReader與DataSet的區別

2019-11-17 03:58:13
字體:
來源:轉載
供稿:網友
DataReader和DataSet最大的區別在于: DataReader使用時始終占用SqlConnection,在線操作數據庫,任何對SqlConnection的操作都會引發DataReader的異常。因為 DataReader每次只在內存中加載一條數據,所以占用的內存是很小的。因為DataReader的特殊性和高性能,所以DataReader是只是向前讀的,讀了第一條后就不能再去讀取第一條了。

DataSet則是將數據一次性加載在內存中.拋棄數據庫連接讀取完畢即放棄數據庫連接因為DataSet將數據全部加載在內存中.所以比較消耗內存但是確比DataReader要靈活可以動態的添加行,列,數據.對數據庫進行回傳更新操作。

ADO.NET提供以下兩個對象,用于檢索關系數據并將其存儲在內存中:DataSet和DataReader。

DataSet提供一個內存中數據的關系表示形式,一整套包括一些表在內的數據(這些表包含數據、對數據進行排序并約束數據),以及表之間的關系。

DataReader提供一個來自數據庫的快速、僅向前、只讀數據流。當使用DataSet時,經常會利用DataAdapter(也可能是CommandBuilder)與數據源進行交互。當使用DataSet時,也可以利用DataView對DataSet中的數據應用排序和篩選。也可以從DataSet繼承,創建強類型DataSet,用于將表、行和列作為強類型對象屬性公開。當設計應用程序時,要考慮應用程序所需功能的等級,以確定使用DataSet或者是DataReader。要通過應用程序執行以下操作,就要使用DataSet:

l       在結果的多個離散表之間進行導航。

l       操作來自多個數據源(例如,來自多個數據庫、一個xml文件和一個電子表格的混合數據)的數據。

l       在各層之間交換數據或使用XML Web服務。與DataReader不同的是,DataSet能傳遞給遠程客戶端。

l       重用同樣的記錄集合,以便通過緩存獲得性能改善(例如排序、搜索或篩選數據)。

l       每條記錄都需要執行大量處理。對使用DataReader返回的每一行進行擴展處理會延長服務于DataReader的連接的必要時間,這影響了性能。

l       使用XML操作對數據進行操作,例如可擴展樣式表語言轉換(XSLT轉換)或XPath查詢。

對于下列情況,要在應用程序中使用DataReader:

l       不需要緩存數據。

l       要處理的結果集太大,內存中放不下。

l       一旦需要以僅向前、只讀方式快速訪問數據。

注:

填充DataSet時,DataAdapter使用DataReader。因此,使用DataAdapter取代DataSet提升的性能表現為節省了DataSet占用內存和填充DataSet需要的循環。一般來說,此性能提升只是象征性的,因此,設計決策應以所需功能為基礎。



本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/YangLau/archive/2009/12/17/5026748.aspx
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 施甸县| 姜堰市| 大田县| 佛山市| 高雄县| 瑞昌市| 遂溪县| 浑源县| 从化市| 育儿| 海兴县| 金华市| 长岭县| 来安县| 嘉善县| 龙游县| 赞皇县| 云林县| 鄂托克前旗| 二连浩特市| 蓬溪县| 林州市| 皮山县| 荔浦县| 沿河| 双流县| 上虞市| 香河县| 肃宁县| 剑阁县| 宜丰县| 广昌县| 大洼县| 石阡县| 武陟县| 昌吉市| 九台市| 房产| 册亨县| 鲁山县| 同江市|