对DataTable的一些解释
最經做導入導出Excel時,經常操作DataTable,DataSet,就按自己的需求對他們的一些常用的東西進行了一下總結。
一、DataTable簡介????
??????????(1)構造函數?
??????????DataTable()?? 不帶參數初始化DataTable 類的新實例。?
??????????DataTable(string tableName)? 用指定的表名初始化DataTable 類的新實例。?
??????????DataTable(string tableName, string tableNamespace) 用指定的表名和命名空間初始化DataTable 類的新實例。?
??????????(2) 常用屬性?
??????????CaseSensitive??? 指示表中的字符串比較是否區分大小寫。?
??????????ChildRelations?? 獲取此DataTable 的子關系的集合。?
??????????Columns???????????? 獲取屬于該表的列的集合。?
??????????Constraints??????? 獲取由該表維護的約束的集合。?
??????????DataSet?????????????? 獲取此表所屬的DataSet。DataSet相關信息,可見我以前的一篇文章《數據訪問(2)-DataSet》?
??????????DefaultView?????? 獲取可能包括篩選視圖或游標位置的表的自定義視圖。?
??????????HasErrors????????? 獲取一個值,該值指示該表所屬的DataSet 的任何表的任何行中是否有錯誤。?
??????????MinimumCapacity? 獲取或設置該表最初的起始大小。該表中行的最初起始大小。默認值為 50。?
??????????Rows????????????????? 獲取屬于該表的行的集合。?
??????????TableName?????? 獲取或設置DataTable 的名稱。?
??????????(3)常用方法?
??????????AcceptChanges()?? 提交自上次調用AcceptChanges() 以來對該表進行的所有更改。?
??????????BeginInit()???????? 開始初始化在窗體上使用或由另一個組件使用的DataTable。初始化發生在運行時。
??????????Clear()?????????????? 清除所有數據的DataTable。?
??????????Clone()????????????? 克隆DataTable 的結構,包括所有DataTable 架構和約束。?
??????????EndInit()??????????? 結束在窗體上使用或由另一個組件使用的DataTable 的初始化。初始化發生在運行時。?
??????????ImportRow(DataRow row)??? 將DataRow 復制到DataTable 中,保留任何屬性設置以及初始值和當前值。?
??????????Merge(DataTable table)? 將指定的DataTable 與當前的DataTable 合并。?
??????????NewRow()???????? 創建與該表具有相同架構的新DataRow。
?二、DataTable使用技巧
? 下面使部分測試代碼:
?
View Code 1 //關于DataSet與DataTable的解釋2 private void text()
3 {
4 DataSet ds1 = new DataSet("datasetname");
5 DataTable dt1 = new DataTable("table1");
6
7 //為Datatable添加列
8 dt1.Columns.Add(new DataColumn("col1"));
9 dt1.Columns.Add(new DataColumn("col2"));
10 //另一種添加列的方法,可以在后面定制列的屬性,包括列名,數據類型,是否為空,設置主鍵,自動增長等
11 DataColumn col0 = dt1.Columns.Add();
12 col0.ColumnName = "col0";
13 col0.AllowDBNull = true;//是否為空
14 col0.MaxLength = 10;//設置文本最大長度
15
16 dt1.PrimaryKey = new DataColumn[] { dt1.Columns["col1"] };//設置主鍵
17 dt1.Columns["col1"].AutoIncrement = true;//自動增長
18 dt1.Columns["col1"].AutoIncrementSeed = 0;
19 dt1.Columns["col1"].AutoIncrementStep = 1;
20
21 //為DataTable添加數據,Row0
22 DataRow dr;
23 dr = dt1.NewRow();
24 dr.BeginEdit();
25 //在此處可以得知,下面兩種方式都可以但是推薦使用dr["col0"]
26 dr[1] = "2";
27 dr["col0"] = "3";
28 dr.EndEdit();
29
30 //為DataTable添加數據,Row1
31 DataRow dr2 = dt1.NewRow();
32 dr2.BeginEdit();
33 dr2[1] = "22";
34 dr2[2] = "33";
35 dr2.EndEdit();
36 dt1.Rows.Add(dr);
37 dt1.Rows.Add(dr2);
38
39 //為DataTable添加數據,Row2
40 object[] aValue = {"2","222","333" };
41 dt1.LoadDataRow(aValue,false);
42
43 //對Row中數據的修改
44 DataRow roweidt = dt1.Rows.Find("1");//表中必須有主鍵
45 if (roweidt == null)
46 {
47 //沒有查找到
48 }
49 else
50 {
51 roweidt.BeginEdit();
52 roweidt["col2"] = "12";
53 roweidt["col0"] = "13";
54 roweidt.EndEdit();
55 }
56
57 //對空值的處理
58 DataRow roweidt2 = dt1.Rows.Find("1");//表中必須有主鍵
59 if (roweidt2 == null)
60 {
61 //沒有查找到
62 }
63 else
64 {
65 if (roweidt2.IsNull("col2"))
66 { }
67 else
68 {
69 roweidt2.BeginEdit();
70 roweidt2["col2"] = DBNull.Value;//賦予空值
71 roweidt2["col0"] = "13";
72 roweidt2.EndEdit();
73 }
74 }
75
76 //刪除DataRow
77 //DataRow roweidt3 = dt1.Rows.Find("1");
78 //roweidt3.Delete();
79
80 //清除DataRow
81 DataRow roweidt4 = dt1.Rows.Find("1");
82
83 dt1.Rows.Remove(roweidt4);
84 //dt1.Rows.RemoveAt(index);
85
86 //將Datatable加入到DataSet中
87 ds1.Tables.Add(dt1);
88
89 //檢驗部分
90 string tmp1 = dt1.Columns[0].ColumnName;
91 string tmp2 = dt1.Rows[1][2].ToString();
92 string tmp3 = ds1.Tables["table1"].Rows[1][2].ToString();
93 }
?
參考:C#中 DataTable使用詳解
?三,深入了解DataTable,以及數據庫之間的表傳送問題請看
深入詳解DataTable?:
?http://alexis.blog.51cto.com/2621421/573969
四,關于Datatble中的簡單的數據運算,請參照
C#詳解DataTable計算功能的實現
轉載于:https://www.cnblogs.com/justinjia/archive/2012/04/04/2432267.html
總結
以上是生活随笔為你收集整理的对DataTable的一些解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解如何制作苹果OS X系统ISO光盘
- 下一篇: JSON serializing and