天天看点

C# DataSet和Datatable、DataView介绍

自定义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='活动'";

版权声明:本文为CSDN博主「weixin_33716941」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_33716941/article/details/92031745