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

首頁 > 網站 > 幫助中心 > 正文

ADO.NET實用經驗匯總

2024-07-09 22:42:08
字體:
來源:轉載
供稿:網友

DataSet與DataReader

當設計應用程序時,要考慮應用程序所需功能的等級,以確定使用DataSet或者是DataReader。

要通過應用程序執行以下操作,就要使用DataSet:

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

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

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

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

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

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

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

1) 不需要緩存數據。

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

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

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

使用強類型DataSet的好處

DataSet的另一個好處是可被繼承以創建一個強類型DataSet。強類型DataSet的好處包括設計時類型檢查,以及Microsoft Visual Studio.NET用于強類型DataSet語句結束所帶來的好處。修改了DataSet的架構或關系結構后,就可以創建一個強類型DataSet,將行和列作為對象的屬性公開,而不是作為集合中的項公開。例如,不公開客戶表中行的姓名列,而公開Customer對象的Name屬性。類型化DataSet從DataSet類派生,因此不會犧牲DataSet的任何功能。也就是說,類型化DataSet仍能遠程訪問,并作為數據綁定控件(例如DataGrid)的數據源提供。如果架構事先不可知,仍能受益于通用DataSet的功能,但卻不能受益于強類型DataSet的附加功能。

處理強類型DataSet中的空引用

使用強類型DataSet時,可以使用DataSet的XML架構定義語言(XSD)架構來確保強類型DataSet可以正確處理空引用。nullValue標識符使您可用一個指定的值String.Empty代替DBNull、保留空引用或引發異常。選擇哪個選項取決于應用程序的上下文。默認情況下,如果遇到空引用,就會引發異常。

刷新DataSet中的數據

如果想用服務器上的更新值刷新DataSet中的值,就使用DataAdapter.Fill。如果有在DataTable上定義的主鍵,DataAdapter.Fill會根據主鍵進行新行匹配,并且當更改到現有行時應用服務器上的值。即使刷新之前修改了這些數據,刷新行的RowState仍被設置為Unchanged。注意,如果沒有為DataTable定義主鍵,DataAdapter.Fill就用可能重復的主鍵值添加新行。

如果想用來自服務器的當前值刷新表,并同時保留對表中的行所做的任何更改,必須首先用DataAdapter.Fill填充表,并填充一個新的DataTable,然后用preserveChanges值true將DataTable合并到DataSet之中。

在DataSet中搜索數據

在DataSet中查詢與特定條件相匹配的行時,可以利用基于索引的查找提高搜索性能。當將PrimaryKey值賦給DataTable時,會創建一個索引。當給DataTable創建DataView時,也會創建一個索引。下面是一些利用基于索引進行查找的技巧。

1) 如果對組成DataTable的PrimaryKey的列進行查詢,要使用DataTable.Rows.Find而不是DataTable.Select。

2) 對于涉及到非主鍵列的查詢,可以使用DataView為數據的多個查詢提高性能。當將排序順序應用到DataView時,就會建立一個搜索時使用的索引。DataView公開Find和FindRows方法,以便查詢基礎DataTable中的數據。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 剑川县| 札达县| 贡嘎县| 普定县| 南昌县| 潮安县| 汽车| 凤山市| 大厂| 嘉定区| 闻喜县| 东乡| 西昌市| 南昌市| 鹤壁市| 泽普县| 闽侯县| 双牌县| 双流县| 若尔盖县| 永登县| 区。| 嵊泗县| 集贤县| 大宁县| 财经| 广河县| 香河县| 白沙| 连州市| 湖口县| 成安县| 墨玉县| 宝应县| 梓潼县| 河津市| 石屏县| 正安县| 金溪县| 洪泽县| 仙居县|