当前位置:首页>网络学院>程序开发>ASP.NET教程>文章内容

DataTable、DataView、DataSet 区别

[ 来源:http://www.it55.com | 作者: | 时间:2007-10-09 | 收藏 | 推荐 ] 【

今天看到又有人问,DataTable、DataView、DataSet 三者的区别,于是整理了一下,拿来大家用:

vd;k;l http://www.it55.com rdfg

DataGrid 通过DataSource 和 DataMember 属性来绑定其要显示的数据源。数据源一般是DataTable、DataView、DataSet等,不过将这些数据源绑定到DataGrid时实际上是绑定的DataView。  

免费资源http://www.it55.com


一、DataTable  IT资讯之家 http://www.it55.com

DataTable表示内存中数据的一个表,它完全是在内存中的一个独立存在,包含了这张表的全部信息。DataTable可以是从通过连接从数据库中读取出来形成的一个表,一旦将内容读到DataTable中,此DataTable就可以跟数据源断开而独立存在;也可以是完全由程序自己通过代码来建立的一个表。 

it55.com

◆ DataColumn  sflj http://www.it55.com kg^&fgd

一个表是由行和列组成的一个两维的结构。表的结构是由 DataColumn 对象的集合组成,DataColumn 对象集合可由DataTable.Columns 属性中能获取到,通过定义每一列的数据类型来确定表的架构,类似数据库中定义表。定义完表的结构就可以根据结构来生成DataRow,用 DataTable.NewRow()方法来生成此DataTable结构的新行。 
一个DataTable是由DataRow的集合组成的, DataRow的集合这个可以由DataTable.Rows 属性来访问。 

IT资讯之家 http://www.it55.com

DataTable还可以通过现有的列用Expression 属性的表达式创建一些列。 

http://www.it55.com

1、创建计算出的列  sflj http://www.it55.com kg^&fgd

比如:已经有了一个表结构,表中有一个DataColumn的集合,其中有一个叫UnitPrice的列,你可以新建一个 DataColumn,设置好ColumnName,再设置此列的表达式,DataColumn.Expression = "UnitPrice * 0.086",这个列的值就是名字为UnitPrice的列计算出来的,在创建表达式时,使用 ColumnName 属性来引用列。  免费设计素材下载http://www.it55.com

2、第二个用途是创建聚合列  45398 http://www.it55.com it55学习IT知识,享受IT生活 4dfkjn

聚合列聚合通常沿着关系执行(有关关系的描述见下面DataRelation部分),如果order表有名为 detail 的子表,两个表之间通过order.orderid和detail.orderid两个列建立一个关系 DataRelation 对象名为“order2detail”,在主表order中就可以建立一个聚合列,将计算每个order在detail表中含有的所有item的价格的和:DataColumn.Expression = “sum(child(order2detail).price)",child(order2detail)表示通过关系order2detail联系到的子表,child(order2detail).price就表示子表的price列。 

免费资源http://www.it55.com

 

免费矢量图片素材下载http://www.it55.com

二、DataView 

IT资讯之家 http://www.it55.com

DataView 表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。可以将DataView同数据库的视图类比,不过有点不同,数据库的视图可以跨表建立视图,DataView则只能对某一个 DataTable建立视图。DataView一般通过DataTable.DefaultView 属性来建立,再通过通过RowFilter 属性和RowStateFilter 属性建立这个DataTable的一个子集。  sflj http://www.it55.com kg^&fgd

RowFilter属性用来筛选要查看DataTable中哪些行的表达式,这个表达式同上面所说的建立计算列的表达式相同。例如:"LastName = Smith ",这就是只查看列LastName的值为 Smith 的那些数据行。 

vd;k;l http://www.it55.com rdfg

RowStateFilter 属性用来设置 DataView 中的行状态筛选器,上面介绍DataRow时介绍了DataRow的状态,一个DataRow可能有五种状态,RowStateFilter就是可以通过这些状态来筛选要查看的行集。其实DataRow不仅有五种状态,DataRow还有版本的问题,比如当DataRow的状态为Modified,即这行已经被修改了,这时这个DataRow就会有两个版本,Current版本和Original版本(修改前的)。实际上RowStateFilter属性是综合了DataRow的状态和版本来筛选的(RowStateFilter确省值是CurrentRows)见下表:  免费矢量图片素材下载http://www.it55.com

成员名称 说明 
Added 一个新行。 
CurrentRows 包括未更改行、新行和已修改行的当前行。 
Deleted 已删除的行。 
ModifiedCurrent 当前版本,原始数据(请参阅 ModifiedOriginal)的修改版本。 
ModifiedOriginal 原始版本(尽管它后来已被修改并以 ModifiedCurrent 形式存在)。 
None 无。 
OriginalRows 包括未更改行和已删除行的原始行。 
Unchanged 未更改的行。  免费资源http://www.it55.com

DataView.Count属性得到的计数是在应用了 RowFilter 和 RowStateFilter 之后,获取 DataView 中记录的数量。  免费资源http://www.it55.com

DataView 是建立在DataTable基础上的,DataView.Table 属性可以得到此DataView对应的那个DataTable。DataView的行叫DataRowView,可以从DataRowView直接通过 DataRowView.Row 属性得到此DataRowView对应的DataRow。 

免费矢量图片素材下载http://www.it55.com

三、DataGrid 

免费矢量图片素材下载http://www.it55.com

这里说的DataGrid是winform中的DataGrid,一般都是跟DataView绑定来显示DataTable中的数据,和修改DataTable中的数据。 

vd;k;l http://www.it55.com rdfg

  DotNet的DataGrid的功能强大,可是在使用上与以前的习惯不太一样,有时还比较麻烦,所以很多人都对这个DataGrid感到有些摸不着头脑,有一种无从下手的感觉,其实把一些概念搞清楚了许多问题就会迎刃而解了。 

免费网页模版下载http://www.it55.com

DataGrid 通过DataSource 和 DataMember 属性来绑定其要显示的数据源。数据源一般是DataTable、DataView、DataSet等,不过将这些数据源绑定到DataGrid时实际上是绑定的DataView。若数据源是DataTable时,实际上是绑定了此DataTable的DefaultView,若数据源是DataSet时,则可以向 DataMember 属性设置一个字符串,该字符串指定要绑定到的表,然后再将DataMember指定的那个DataTable的DefaultView绑定到 DataGrid。 

免费设计素材下载http://www.it55.com

所以DataGrid实际显示的是DataTable经过筛选的DataView。
精美韩国模版下载http://www.it55.com

(编辑:IT资讯之家 www.it55.com

返回顶部
 
上一篇:关于数据库日期查询sql语句整理   下一篇:没有了

网友评论

[以下评论为网友观点,不代表本站。请自觉遵守互联网相关政策法规,所有连带责任均有评论者自负。]
[不超过250字]