C# DataSet


  DataSet 是C#中用來存儲數據庫數據的。其實,它的作用是在內存中模擬數據庫。我們現實生活中的數據庫從大到小的基本結構類似於:數據庫實例,表,列,行。在C#語言中,我們在內存中也模擬出了一個這樣的關系型數據模型。對應關系如下表:

數據庫  DataSet

表    DataTable

列    DataColumn

行    DataRow

  有了這一樣模擬之后,我們在操作數據庫和內存的時候,就可以使用同樣的思維模型了。


  DataSet 和 物理數據庫是兩個客體,要使這兩個客體保持一致,就需要使用 DataAdapter 類來同步兩個客體。一般來說操作流程是:使用 DataAdapter 把物理數據庫中的數據填充到 DataSet 中的 DataTable 里。當我們對內存中的 DataSet 做了增、刪、改操作后,可以使用 DataAdapter 同步回數據庫。

  MSDN的描述如下:

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

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

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

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

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

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

 

一、 創建dataset

  1. 創建

  可以選擇指定一個名稱參數。如果沒有為 DataSet 指定名稱,則默認設置為“NewDataSet”。

DataSet customerOrders = new DataSet("CustomerOrders");

  2. 復制

  DataSet 的原樣副本,其中包含架構、數據、行狀態信息和行版本。  

DataSet copyDataSet = customerDataSet.Copy();

  創建包含現有 DataSet 的架構但僅包含已修改行的 DataSet。可以返回已修改的所有行或者指定特定的 DataRowState。

// Copy all changes.
DataSet changeDataSet = customerDataSet.GetChanges();
 // Copy only new rows.
DataSet addedDataSet = customerDataSet.GetChanges(DataRowState.Added);

  僅復制 DataSet 的架構(即關系結構),而不復制任何行。可以使用 ImportRow 將行導入現有 DataTable。

DataSet germanyCustomers = customerDataSet.Clone();

 

二、 向 DataSet 添加 DataTable

  我們可以創建 DataTable 對象,並將其添加到現有 DataSet 中。還可以使用 PrimaryKey 和 Unique 屬性為 DataTable 設置約束信息。

  以下示例構造一個 DataSet,將一個新的 DataTable 對象添加到該 DataSet 中,然后將三個 DataColumn 對象添加到該表中。最后,該代碼將一個列設置為主鍵列。

DataSet customerOrders = new DataSet("CustomerOrders");
DataTable ordersTable = customerOrders.Tables.Add("Orders");
DataColumn pkOrderID
= ordersTable.Columns.Add("OrderID", typeof(Int32)); ordersTable.Columns.Add("OrderQuantity", typeof(Int32)); ordersTable.Columns.Add("CompanyName", typeof(string)); ordersTable.PrimaryKey = new DataColumn[] { pkOrderID };

 

 

 

 參考文獻:http://msdn.microsoft.com/zh-cn/library/ss7fbaez(v=vs.90) //這個是3.5版本的,應該看這個

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM