最经做导入导出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使用技巧
下面使部分测试代码:
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中的简单的数据运算,请参照