DataSet 是C#中用來存儲數據庫數據的。其實,它的作用是在內存中模擬數據庫。我們現實生活中的數據庫從大到小的基本結構類似於:數據庫實例,表,列,行。在C#語言中,我們在內存中也模擬出了一個這樣的關系型數據模型。對應關系如下表:
數據庫 DataSet
表 DataTable
列 DataColumn
行 DataRow
有了這一樣模擬之后,我們在操作數據庫和內存的時候,就可以使用同樣的思維模型了。
DataSet 和 物理數據庫是兩個客體,要使這兩個客體保持一致,就需要使用 DataAdapter 類來同步兩個客體。一般來說操作流程是:使用 DataAdapter 把物理數據庫中的數據填充到 DataSet 中的 DataTable 里。當我們對內存中的 DataSet 做了增、刪、改操作后,可以使用 DataAdapter 同步回數據庫。
MSDN的描述如下:
-
-
通過 DataAdapter 使用數據源中的數據生成和填充 DataSet 中的每個DataTable。
-
通過添加、更新或刪除 DataRow 對象更改單個 DataTable 對象中的數據。
-
調用 GetChanges 方法以創建只反映對數據進行的更改的第二個DataSet。
-
調用 DataAdapter 的 Update 方法,並將第二個 DataSet 作為參數傳遞。
-
調用 Merge 方法將第二個 DataSet 中的更改合並到第一個中。
-
針對 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版本的,應該看這個