首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# DataSet 與 DataTable 詳細教學(二):建立與操作 DataTable

     編輯:關於C語言

建立 DataTable 物件

在 C# 中,DataTable 代表記憶體中的資料表。您可以透過建構函式直接建立實例,並指定表格名稱:

DataTable tbl = new DataTable("TableName");

將 DataTable 加入 DataSet

DataSet 的 Tables 集合可容納多個 DataTable。有兩種常見寫法:

// 寫法一:先建立 DataTable 再加入
DataSet ds = new DataSet();
DataTable tbl = new DataTable("Customers");
ds.Tables.Add(tbl);

// 寫法二:直接透過 DataSet 建立並加入
DataSet ds = new DataSet();
DataTable tbl = ds.Tables.Add("Customers");

注意: 一個 DataTable 同一時間只能屬於一個 DataSet。若需加入多個 DataSet,必須使用 Copy()(複製結構與資料)或 Clone()(僅複製結構)方法建立新實例。

新增欄位與設定主鍵

透過 Columns.Add 方法可新增欄位,並可設定屬性如 AllowDBNull、MaxLength、Unique。主鍵則指派給 PrimaryKey 屬性(接受 DataColumn 陣列):

DataTable tbl = ds.Tables.Add("Orders");
DataColumn col = tbl.Columns.Add("OrderID", typeof(int));
col.AllowDBNull = false;
col.MaxLength = 5;
col.Unique = true;

// 設定主鍵(此處假設 CustomersID 欄位已存在)
tbl.PrimaryKey = new DataColumn[] { tbl.Columns["CustomersID"] };

當欄位被設為主鍵時,AllowDBNull 會自動設為 false。

處理自動遞增欄位

適合用於身分識別欄位。設定 AutoIncrement、AutoIncrementSeed(起始值)、AutoIncrementStep(遞增間距),並通常將 ReadOnly 設為 true:

DataSet ds = new DataSet();
DataTable tbl = ds.Tables.Add("Orders");
DataColumn col = tbl.Columns.Add("OrderID", typeof(int));
col.AutoIncrement = true;
col.AutoIncrementSeed = -1;
col.AutoIncrementStep = -1;
col.ReadOnly = true;

新增運算式欄位

可在建立欄位時直接指定運算式,例如依據其他欄位計算總價:

tbl.Columns.Add("ItemTotal", typeof(Decimal), "Quantity * UnitPrice");

修改 DataTable 內容:新增資料列

主要有兩種方式:

方式一:使用 NewRow 逐欄賦值

DataRow row = ds.Tables["Customers"].NewRow();
row["CustomerID"] = "ALFKI";
ds.Tables["Customers"].Rows.Add(row);

方式二:使用 LoadDataRow 陣列一次寫入

object[] aValues = { "ALFKI", "Alfreds", "Anders", "030-22222" };
ds.Tables["Customers"].LoadDataRow(aValues, false);

第二個參數 false 表示不保留變更狀態(即不標記為已修改)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved