DataSet和DataTable详解

先构建一个结构与用户请求数据结构相同的DataTable,而后将用户的请求数据填充到构建好的DataTable中,最后将DataTable添加到DataSet中。数据库


DataTable,,DataColumn,DataRow 深刻研究数据结构

DataTable是内存中的一个关系数据表,能够独立建立使用,也能够做为DataSet的一个成员使用!this

如何将DataTable做为DataSet的一个成员使用:
首先建立一个DataTable对象,其次经过使用Add方法将其添加到DataSet对象的Tables集合中
示例:
DataSet dsClass = new DataSet();   //建立一个新的空班级DataSet
DataTable dtClass = new DataTable("Class"); //建立班级表
dsClass.Tables.Add(dtClass);  //将班级表添加到DataSet中
若是没有指定DataTable名称时把DataTable添加到DataSet中,该表会获得一个从“0”开始递增的默认表名.net

刚开始建立的表没有表结构,要定义表的结构,必须建立DataColumn对象并将其添加到表的Columns集合中。在为DataTable定义告终构以后,经过DataRow对象将数据添加到表的Rows集合中对象

 

 


DataColumn排序

DataColumn是建立DataTable的基础,经过向DataTable中添加一个或多个DataColumn对象来定义DataTable的结构。DataColumn有一些经常使用属性用于对输入数据的限制,例如:数据类型,数据长度,默认值。索引

DataColumn的经常使用属性
AllowDBNull   是否容许空值
ColumnName    存储的数据类型
DataType      存储的数据类型
MaxLength     获取或设置文本列的最大长度
DafaultValue  默认值
Table        所属的DataTable的名称
Unique       DataColumn的值是否惟一内存

定义DataColumn有两种方法,
方法一:
//建立班级名称列
DataColumn className = new DataColumn();
className.ColumnName = "ClassName";
className.DataType = System.Type.GetType("System.String");
className.MaxLength = 50;开发

//建立班级名称列
DataColumn className = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;string

 

 

DataRow
DataRow表示DataTable中包含的实际数据,咱们能够经过DataRow将数据添加到用DataColumn定义好DataTable中。

//建立班级名称列
DataColumn className = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//建立一个新的数据行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();

 

 

如何自定义DataSet
1.建立DataSet对象
2.建立DataTable对象
3.建立DataColumn对象构建表结构
4.将建立好的表结构添加到表中
5.建立DataRow对象新增数据
6.将数据插入到表中
7.将表添加到DataSet中

示例:
//建立一个新的空班级DataSet
DataSet dsClass = new DataSet();
//建立班级表
DataTable dtClass = new DataTable("Class");
//建立班级名称列
DataColumn dcClassName = new DataColumn("ClassName",typeof(string));
className.MaxLength = 50;
//建立年级ID列
DataColumn dcGradeID = new DataColumn(GradeID",typeof(int));
//将定义好列添加到班级表中
dtClass.Columns.Add(dcClassName);
dtClass.Columns.Add(dcGradeID);
//建立一个新的数据行
DataRow drClass = dtClass.NewRow();
drClass["className"] = this.txtClassName.Text.Trim();
drClass["gradeID"] = objGrade.GetGradeIDByGradeName(this.cboGrade.Text.Trim());
//将新的数据行插入班级表中
dtClass.Rows.Add(drClass);
//将班级表添加到DataSet中
dsClass.Tables.Add(dtClass);

如何获取DataSet中的数据
从DataSet中获取数据有两种方式:
1.第一种方式是经过指定DataSet中的具体DataTable的某行某列来获取数据。
    步骤:
        1.经过表名,从DataSet中获取指定的DataTable
        2.经过索引,从DataTable中获取指定的DataRow
        3.经过列名,从DataRow中获取指定列的数据
例:
//获得班级名称
dsClass.Table["Class"].Row[0]["ClassName"];
//获得年级ID
dsClass.Tables["Class"].Row[0]["GradeID"]


2.另外一种方式是将DataSet中的数据直接绑定到数据展现控件上。

 


咱们通常都须要对从DataSet中提取出来的数据作一些简单的修饰,如隐藏特定列,按照某列排序。其实很简单,.net为咱们提供了一个DataView对象,它能够像数据库中的视图同样帮助咱们创建DataSet中数据对应的不一样视图。(一个DataTable能够动态生成多个DataView)

DataView
DataView为咱们提供DataTable的动态视图,并能够对动态生成的视图中的数据进行排序、笪选等操做,它与数据库中的视图相似,惟一不一样的是它没法提供关联DataTable的视图,它不能排除原表中存在的列,也不能向原表中追加不存在的列

示例:
//过滤掉用户状态为非活动的学员
//对过过滤后的学员信息以学员名称降序排序
DataSet dsStudent = new DataSet();
DataView dvStudent = new DataView();
dvStudent.Table = dsStudent.Tables["studentTable"];
dvStudent.RowFilter = "UserState = '活动'";
dvStudent.Sort = "StudentName DESC";

DataView几个经常使用的属性:
Table        用于获取或设置源DataTable
Sort          获取或设置DataView的一个或多个排序列以及排序顺序
RowFilter     获取或设置用于筛选在DataView中查看哪些行的表达式
Count          在应用RowFilter后,获取DataView中的行数

 

经验:在开发中若是须要对DataGrigView展现的数据进行动态筛选或排序时,咱们最好使用DataTable的DefaultView(默认视图)属性来获得DataTable的视图,这样咱们就能够减小实例化DataView对象的步骤,以及获取DataView对象原DataTable的过程。DataTable dtStudent = (DataTable)dataGridView.DataSource;dtStudent.Tables["studentTable"].DefaultView.RowFilter = "UserState='活动'";

相关文章
相关标签/搜索