DataSet

DataSet

DataSet是ADO.NET的中心概念。可以把DataSet當成記憶體中的資料庫,DataSet是不依賴於資料庫的獨立數據集合。所謂獨立,就是說,即使斷開數據鏈路,或者關閉資料庫,DataSet依然是可用的,DataSet在內部是用XML來描述數據的,由於XML是一種與平台無關、與語言無關的數據描述語言,而且可以描述複雜關係的數據,比如父子關係的數據,所以DataSet實際上可以容納具有複雜關係的數據,而且不再依賴於資料庫鏈路。

概述

正是由於DataSet才使得程式設計師在編程時可以禁止資料庫之間的差異,從而獲得一致的編程模型。DataSet支持多表、表間關係、數據約束等,和關係資料庫的模型基本一致。

DataSet 是 ADO. NET結構的主要組件,它是從數據源中檢索到的數據在記憶體中的快取。DataSet 由一組 DataTable 對象組成,您可使這些對象與 DataRelation 對象互相關聯。您還可通過使用 UniqueConstraint 和 ForeignKeyConstraint 對象在 DataSet 中實施數據完整性。有關使用 DataSet 對象的詳細信息,請參見 。

儘管 DataTable 對象中包含數據,但是 DataRelationCollection 允許您遍覽表的層次結構。這些表包含在通過 Tables 屬性訪問的 DataTableCollection 中。當訪問 DataTable 對象時,請注意它們是按條件區分大小寫的。例如,如果一個 DataTable 被命名為“mydatatable”,另一個被命名為“Mydatatable”,則用於搜尋其中一個表的字元串被認為是區分大小寫的。但是,如果“mydatatable”存在而“Mydatatable”不存在,則認為該搜尋字元串不區分大小寫。有關使用 DataTable 對象的更多信息,請參見 創建 DataTable。

DataSet 可將數據和架構作為 XML 文檔進行讀寫。數據和架構可通過 HTTP 傳輸,並在支持 XML 的任何平台上被任何應用程式使用。可使用 WriteXmlSchema 方法將架構保存為 XML 架構,並且可以使用 WriteXml 方法保存架構和數據。若要讀取既包含架構也包含數據的 XML 文檔,請使用 ReadXml 方法。

在典型的多層實現中,用於創建和刷新 DataSet 並依次更新原始數據的步驟包括:

通過 DataAdapter 使用數據源中的數據生成和填充 DataSet 中的每個 DataTable。

通過添加、更新或刪除 DataRow 對象更改單個 DataTable 對象中的數據。

調用 GetChanges 方法以創建只反映對數據進行的更改的第二個 DataSet。

調用 DataAdapter 的 Update 方法,並將第二個 DataSet 作為參數傳遞。

調用 Merge 方法將第二個 DataSet 中的更改合併到第一個中。

針對 DataSet 調用 AcceptChanges。或者,調用 RejectChanges 以取消更改。

需要注意的是:dataset所有數據都載入在記憶體上執行的,可以提高數據訪問速度,提高硬碟數據的安全性。極大的改善了程式運行的速度和穩定性。

數據模型

因為DataSet可以看做是記憶體中的資料庫,也因此可以說DataSet是數據表的集合,它可以包含任意多個數據表(DataTable),而且每一 DataSet中的數據表(DataTable)對應一個數據源中的數據表(Table)或是數據視圖(View)。數據表實質是由行(DataRow)和 列(DataColumn)組成的集合為了保護記憶體中數據記錄的正確性,避免並發訪問時的讀寫衝突,DataSet對象中的DataTable負責維護每一條記錄,分別保存記錄的初始狀態和當前狀態。從這裡可以看出DataSet是與只能存放單張數據表的Recordset是截然不同的概念。

DataSet對象結構還是非常複雜的,在DataSet對象的下一層中是DataTableCollection對象、 DataRelationCollection對象和ExtendedProperties對象。上文已經說過,每一個DataSet對象是由若干個 DataTable對象組成。DataTableCollection就是管理DataSet中的所有DataTable對象。表示DataSet中兩個 DataTable對象之間的父/子關係是DataRelation對象。它使一個DataTable 中的行與另一個DataTable中的行相關聯。這種關聯類似於關係資料庫中數據表之間的主鍵列和外鍵列之間的關聯。 DataRelationCollection對象就是管理DataSet中所有DataTable之間的DataRelation關係的。在 DataSet中DataSet、DataTable和DataColumn都具有ExtendedProperties屬性。 ExtendedProperties其實是一個屬性集(PropertyCollection),用以存放各種自定義數據,如生成數據集的SELECT 語句等。DataRow表示DataType中實際的數據,我們通過DataRow將數據添加到用DataColumn定義好的DataTable。

三大特性

通過上面幾節中的介紹和本節中的分析,我們可以總結出DataSet對象的三大特性:

(1) 獨立性。DataSet獨立於各種數據源。

(2) 離線(斷開)和連線。

(3) DataSet對象是一個可以用XML形式表示的數據視圖,是一種數據關係視圖。

使用方法

在實際套用中,DataSet使用方法一般有三種:

(1) 把資料庫中的數據通過DataAdapter對象填充DataSet。

(2) 通過DataAdapter對象操作DataSet實現更新資料庫。

(3) 把XML數據流或文本載入到DataSet。

相關詞條

相關搜尋

熱門詞條

聯絡我們