一、datatable自己構建以及構造數據,先創建列,然後創建行,並寫入數據
DataTable dt = new DataTable();
dt.Columns.Add("UserId");
dt.Columns.Add("UserName");
for (int i = 0; i < 10; i++) {
var row = dt.NewRow();
string uname="UserName";
row["UserId"] = i.ToString();
row[uname] = "test" + i;
dt.Rows.Add(row);
}
二、dt.RejectChanges(); dt.AcceptChanges(); dt.GetChanges(); 三個函數的含義及相關用法
DataTable 中的每個DataRow中都有DataRowState記錄每行狀態。此狀態在DataTable中已經封裝好。以下為DataRowState 不中狀態值
// 摘要:
// 該行已被創建,但不屬於任何 System.Data.DataRowCollection。System.Data.DataRow 在以下情況下立即處於此狀態:創建之後添加到集合中之前;或從集合中移除之後。
Detached = 1,
//
// 摘要:
// 該行自上次調用 System.Data.DataRow.AcceptChanges() 以來尚未更改。
Unchanged = 2,
//
// 摘要:
// 該行已添加到 System.Data.DataRowCollection 中,System.Data.DataRow.AcceptChanges()
// 尚未調用。
Added = 4,
//
// 摘要:
// 該行已通過 System.Data.DataRow 的 System.Data.DataRow.Delete() 方法被刪除。
Deleted = 8,
//
// 摘要:
// 該行已被修改,System.Data.DataRow.AcceptChanges() 尚未調用。
Modified = 16,
dt.RejectChanges() 此函數表示 “回滾”,主要用在處理異常中。修改DataRowState為運行前的狀態
dt.AcceptChanges() 此函數表示“更新狀態”, 例如:插入一條數據,獲取最新數據,將當前狀態改為默認初始狀態
dt.GetChanges() 此函數表示“發生改變的數據”,此函數將返回發生改變的數據,如果沒有任何改變,則返回null