`

DataSet、DataTable、DataRow、DataColumn

    博客分类:
  • C#
 
阅读更多

DataSet和DataTable详解

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


DataTable,,DataColumn,DataRow 深入研究

DataTable是内存中的一个关系数据表,可以独立创建使用,也可以作为DataSet的一个成员使用!

如何将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”开始递增的默认表名

刚开始创建的表没有表结构,要定义表的结构,必须创建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;

 

 

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

分享到:
评论

相关推荐

    C#关键字DataSet DataTable DataRow DataColumn数据集应用大全

    C#关键字DataSet DataTable DataRow DataColumn数据集应用大全

    DataSet和DataTable有用的方法

    每一个DataSet都是一个或多个DataTable 对象的集合(DataTable相当于数据库中的表),这些对象由数据行(DataRow)、数据列(DataColumn)、字段名(Column Name)、数据格(Item),以及约束(Constraint)和有关...

    reportViewer动态绑定DataTable

    DataRow dr = DataTable2.NewRow(); dr["DataColumn1"] = "qwe1" + i.ToString(); dr["DataColumn2"] = "qwe2" + i.ToString(); dr["DataColumn3"] = "qwe3" + i.ToString(); dr["DataColumn4"] = "qwe4" + i....

    数据库.doc

    一、简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data.Common(各种数据访问类的基类和接口):DataColumnMapping,DataTableMapping

    C#中,数据集DataSet使用方法大全

    1、创建DataSet对象:...通常不必刻意去创建ForeignkeyConstraints,因为当在DataSet的两个DataTable对象之间创建关系时会创建一个。 ③、用SqlDataAdapter.Fill模式来检索模式信息 5、编写代码创建DataTable对象

    Silverlight DataSet

    那么如何将DataTable信息从Wcf传递到Silverlight中呢,就是Wcf将DataSet转成string或byte[]传递到Silverlight然后再将其还原成DataSet,看下面的代码示列: Wcf端: public string GetRecordset(string QuerySql) { ...

    ADO.NET技术内幕 part4

    第Ⅲ部分包含了对ADO.NET对象模型中的脱机对象的讨论——DataSet、DataTable、DataColumn、DataRow、DataRelation和DataView对象。这一部分还介绍了使用DataAdapter向数据库提交更改的基本和高级场景,还讨论了ADO...

    ADO.NET技术内幕 part2

    第Ⅲ部分包含了对ADO.NET对象模型中的脱机对象的讨论——DataSet、DataTable、DataColumn、DataRow、DataRelation和DataView对象。这一部分还介绍了使用DataAdapter向数据库提交更改的基本和高级场景,还讨论了ADO...

    ADO.NET技术内幕 part1

    第Ⅲ部分包含了对ADO.NET对象模型中的脱机对象的讨论——DataSet、DataTable、DataColumn、DataRow、DataRelation和DataView对象。这一部分还介绍了使用DataAdapter向数据库提交更改的基本和高级场景,还讨论了ADO...

    DataSet对象 课件

    某学院《数据库技术应用》的课件。...DataTable对象中的DataColumn对象和DataRow对象;类型化数据集 利用DataSet修改数据;DataSet中的约束和数据关系;类型化数据集的应用 可供教师上课使用,也可供爱好者自学。

    C#ADO.NET数据库操作的Demo程序案例

    介绍ADO.NET数据库操作中类介绍的程序Demo,包括Connection类、Command类、DataAdapter类、DataSet类、DataTable类 DataRow类、DataColumn类等

    C#遍历DataSet中数据的几种方法总结

    foreach (DataTable dt in YourDataset.Tables) //遍历所有的datatable { foreach (DataRow dr in dt.Rows) ///遍历所有的行 foreach (DataColumn dc in dt.Columns) //遍历所有的列 Console.WriteLine(“{0}, ...

    ASP.NET高级编程:校园BBS里的数据绑定.pptx

    DataSet对象把数据存储在一个或多个DataTable中,每一个DataTable又包含了DataRow和DataColumn。 XML文档可以导入DataSet对象,而DataSet对象中的数据也可以导出为XML文档。 ;;7;查看用户信息表中前5条记录信息?;9;...

    Mecado-开源

    为 PHP5 编写的 Mecado 库提供了一种通过 XML 映射访问数据库的简单方法。 它基于 ADO.NET 对象,例如 DataSet、DataTable、DataColumn、DataRow、DataRelation、Constraint、SqlDataAdapter。

    C#中遍历DataSet数据集对象实例

    首先什么是DataSet,在C#中,Dataset就像一个数据库,其中可以有多个表(Table),也可以只有一个表,每个表中有行(DataRow)和列(DataColumn)。使用DataRow[DataColumn]的形式可以得到某行某列数据值。 代码如下: //...

    ADO.NET中的多数据表操作之读取

    我们一般都会用到DataSet,作为ADO.NET的核心类它为我们提供了强大的功能,而整个看上去就像是放在内存内的一个小型数据库,内部包括了DataTable、DataView、DataRow、DataColumn、Constraint以及DataRelation。

    详解LINQ入门(下篇)

    对于做.net 开发的有谁不知道DataSet,DataTable,DataRow,DataColumn这些对象,如果你真的不知道,那好吧建议你到菜市场买2块豆腐撞死算了>_<。也许你会惊讶,哇靠!linq能操作这些?答案是肯定的。那么我们来看看...

    数据调试器可视化器

    VS 2005调试用于DataSet,DataTable,DataView,DataRow和DataColumn对象的可视化工具。

    MysqlDLL,C#操作MYSQL数据库

     Fill(DataTable)//在 DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。 (继承自DbDataAdapter。  Update(DataRow[])//通过为 DataSet 中的指定数组中的每个已插入、已更新或已...

    ado[1].net中文手册 学习 ado.net的重要资料

    合并 DataSet 内容:描述如何将一个 DataSet、DataTable 或 DataRow 数组的内容并入另一个 DataSet。 复制 DataSet 内容:描述如何创建可包含架构和指定数据的 DataSet 副本。 使用 DataSet 事件:描述 DataSet 的...

Global site tag (gtag.js) - Google Analytics