DataTable 为内存中的表并不是 数据库中的表 在经过“持久化”之后 可以转化为数据库中的表
– 持久化到数据库可以使用dataAdapter.Update的方法。
创建DataTable对象的方法:
1.通过构造函数创建
无参数构造函数
DataTable table1=New DataTable();
有参数构造函数
DataTable table1=New DataTable(string tableName) ;
2. 通过DataSet获取DataTable :
DataTable table1=DataSet.Tables[0]
DataTabletable1=DataSet.Tables[“tableName”]
3. 通过已有的DataTable的Clone()方法得到新的DataTable对象
• 新表与现有表结构相同
• 这在实际中也是常用的
DataTable table2=table1.Clone(); 克隆的只是表结构 并不包含数据
而DataTabletable2=table.Copy();是复制表一的所有内容包括结构与数据
4. 通过DataAdapter填充DataSet对象,在DataSet中自动生成一个与查询结果集结构与记录相同的DataTable对象
DataAdapter da=new DataAdapter();
DataSet ds=new DataSet();
DataTable的Columns属性和Rows属性
Columns属性:表示DataTable对象的 DataColumn(数据列的意思)列对象的集合.
Rows属性: 表示DataTable对象的DataRow(数据行的意思)行 对象的集合.
两个属性最常用的方法Add() Clear( )
两个属性表示数组,后面也可以加下标或行或列的名称表示某个行或某个列
DataColumn的构造函数
DataColumn(“Name ”, 列的系统类型名 )
– Name:表示列的名称
– 列的系统类型名:因为DataTable是内存中的表而非数据库中的表,因此它的DataColumn的数据类型是System数据类型。可以用以下两种方式获得:
• typeof(系统类型名称) 设置 如:
DataColumn c1 = newDataColumn("id",typeof (int));
• Type.GetType(“System.类型名”) 设置
DataColumn c2 = newDataColumn("name",Type .GetType ("System.String"));
- Ordinal:返回DataColumn在DataTable对象的列集合中的位置,该属性只读,如果DataColumn不在DataTable对象的Column集合中,返回-1
- 设置是否允许为空 AllowDBNull
- 设置唯一性 Unique
- 只读属性 ReadOnly
- 最大长度 MaxLength
- 设置为自动增长的标识列
① AutoIncrement 是否允许自动增长
② AutoIncrementSeed 自动增长的种子(初始值)
③ AutoIncrementStep 自动增长的步长
- 设置默认值属性 DefaultValue
创建新行:
DataRow r1 =t1.NewRow ();
• 为行中某个列逐个赋值:
– 行对象名称[列的索引值] =表达式;
– 行对象名称[“列的name名”]=表达式;
DataTable的LoadDataRow 方法:
LoadDataRow(Object[] values, Boolean fAcceptChanges)
– 作用:查找和更新特定行。如果找不到任何匹配行
则使用给定值创建新行。
– 通过调用该方法可以向表中添加一整行数据,不需
要逐个字段的赋值操作。