概念:
DataSet:数据在内存中的缓存(数据库)Ado.Net核心组件。
DataTable:内存中的一个表(数据库的一个表)。
应用:
DataSet中的成员使用,也可以独立创建于使用。
结合DataAdapter使用
架构/结构(列和约束构成):
DataColumn 列
成员 行 DataRow
构造函数:
DataTable() 无参构造函数
DataTable(表名)
常用属性:
Columns:列集合
Rows:行的集合
Contraints:约束的集合
DataSet:DataTable所属的DataSet
PrimaryKey:主键(列的数组)
TableName
方法:
AcceptChanges() 提交更改,保存到真实的数据库中
RejectChanges() 回滚,取消更改
Clear() 清空数据
Copy() 复制架构和数据
Clone() 只复制架构,不包含数据
Load(IDataReader) 通过提供的IDataReader,用某个数据源的值,来填充DataTable,
Merge(DataTable) 合并,将指定的dt合并到当前的dt中
NewRow() 创建一个DataRow,与Dt具有相同的架构
Reset() 将dt重置到最初状态
Select() 获取dt所有的行的数组(条件,排序)
示例:
static void TestDataTable()
{
//独立创建与使用
DataTable dt = new DataTable();
dt.TableName = "UserInfo";
//2.
DataTable dt1 = new DataTable("UserInfo");
//此时表为空,没有架构, 列 约束 主键
DataColumn dc = new DataColumn();
dc.ColumnName = "Uid";
dc.DataType = typeof(int); //Type.GetType("System.Int32");
dt1.Columns.Add(dc); //添加一列
dt1.Columns.Add("Uname", typeof(string)); //添加一列
dt1.Columns.Add("Age", typeof(int));
dt1.PrimaryKey = new DataColumn[] { dt1.Columns[0] };//设置主键
dt1.Constraints.Add(new UniqueConstraint(dt1.Columns[1])); //添加唯一约束
//架构定义结束,开始添加数据
DataRow dr = dt1.NewRow(); //与dt1具有相同架构
dr[0] = 1;
dr["Uname"] = "admin";
dr[2] = 18; //此时还未添加,dr的状态为Detached
//DataRowState 一个枚举对象,记录行的状态
//需要将该条行对象,添加到dt1表中
dt1.Rows.Add(dr); //添加完成后,抓过你太为Added
dt1.AcceptChanges(); //提交更改 UnChanged
dr["age"] = 27; //修改 Modified 已修改
dt1.AcceptChanges(); //该条语句执行完后,dr状态为:UnChanged
//dt1.Rows.Remove(dr); //dr状态为:Detached,相当于 dr.Delete() 和dt1.AcceptChanges()
//dr.Delete(); //该条语句执行完后,dr状态为:Deleted
//dt1.AcceptChanges(); //执行完后,dr状态为 : Detached
//dt1.Clear(); // 清除数据,架构还在
DataTable dt2 = dt1.Copy(); //复制架构和数据
DataTable dt3 = dt1.Clone(); //只复制架构,不复制数据
DataRow[] rows = dt1.Select(); //获取所有行
DataRow[] rows1 = dt1.Select("Uid>1", "Uid desc"); //按条件筛选,排序
}