DataTable和DataSet

上传人:鲁** 文档编号:499057556 上传时间:2022-11-05 格式:DOC 页数:19 大小:117.50KB
返回 下载 相关 举报
DataTable和DataSet_第1页
第1页 / 共19页
DataTable和DataSet_第2页
第2页 / 共19页
DataTable和DataSet_第3页
第3页 / 共19页
DataTable和DataSet_第4页
第4页 / 共19页
DataTable和DataSet_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《DataTable和DataSet》由会员分享,可在线阅读,更多相关《DataTable和DataSet(19页珍藏版)》请在金锄头文库上搜索。

1、精品文档,仅供学习与交流,如有侵权请联系网站删除DataSet和DataTable有用的方法每一个DataSet都是一个或多个DataTable 对象的集合(DataTable相当于数据库中的表),这些对象由数据行(DataRow)、数据列(DataColumn)、字段名(Column Name)、数据格(Item),以及约束(Constraint)和有关DataTable对象中数据的关系(Relations)与数据显示排序(DataView)信息组成。DataView用来在观察数据时提供排序和过滤的功能。DataColumn用来对表中的数据值进行一定的规限。比如哪一列数据的默认值是什么、哪一

2、列数据值的范围是什么、哪个是主键、数据值是否是只读等。由于一个DataSet可能存在多张表,这些表可能存在关联关系,因此用parentRelations和childRelations来表述。ParentRelations表是父表,childRelations是子表,子表是对父表的引用,这样就使得一个表中的某行与另一个表中的某一行甚至整个表相关联。1DataTableCollection 类表示 DataSet 的表的集合。DataTableCollection dtc = ds.Tables;DataTable customerTable = dtcProduct;2DataTable进行动态

3、的筛选和排序调用DataTable.Select()方法,获取 DataRow 对象的数组。(1)获取所有行。DataRow rows = dt.Select();(2)按主键顺序(如没有主键,则按照添加顺序)获取符合筛选条件的行。DataRow rows = dt.Select(ID52);(3)获取符合筛选条件的行,并按指定的排序条件排序。DataRow rows = dt.Select(ID52,ID DESC);(4)获取符合筛选条件和指定状态的行,并按指定的排序条件排序。string strExpr = ID52;string strSort = ID DESC;DataRow fo

4、undRows = dt.Select(strExpr, strSort, DataViewRowState.OriginalRows);3DataTable进行数据统计我们在使用SQL Server时,可以轻松地对数据进行Sum、Aver、Count等操作以获得统计结果,那么,在已经把数据检索出来的DataSet(DataTable)中如何进行统计呢?特别是通过第三方接口Web Service获得了DataSet,这个时候,没有办法去执行Select语句来获取这些统计,怎么办呢?办法总比问题多,其实在DataTable中也是可以进行数据统计的。下面就通过几个简单的示例,介绍一下如何无须通过逐

5、条记录进行计算就可以轻松地获得DataTable中的记录统计结果。这里调用的是功能强大的DataTable的函数Compute。(1)函数说明:public object Compute(string strExpression,string strFilter);l strExpression:要计算的表达式字符串,基本上类似于Sql Server中的统计表达式。l strFilter:统计的过滤字符串,只有满足这个过滤条件的记录才会被统计。(2)调用示例。假设一个产品销售表P_Sell,描述商场中各销售人员的销售记录,如表5-2所示。表5-2 产品销售表序号列名数据类型长度主键允许空说明1

6、IDint4流水号2Namevarchar50姓名3Sexsmallint2性别:0为女,1为男4Birthdaydatetime8生日5ProductIdvarchar20销售产品代码6Numint4销售的数量7Pricedecimal9销售价格l 统计所有性别为女的销售员的数量:object n = table.Compute(count(ID), Sex = 0);l 统计所有年龄大于20岁的销售员的数量:int c=(int)table.Compute(count(ID), Birthday 52, ID DESC,DataViewRowState.CurrentRows);(2)得到

7、DataView的行数据。foreach (DataRowView rowview in dv) for (int i = 0; i dv.Table.Columns.Count; i ) Response.Write(rowviewi );(3)对结果集过滤排序。DataView dv = ds.Tables0.DefaultView;dv.RowFilter = ID 52;dv.Sort = ID DESC;int c = dv.Count;if (c 51) for (int n = 50; n c; n ) dv.Delete(n);this.DataGrid1.DataSource

8、 = dv;详解DataSet和DataTable1、创建DataSet对象:DataSet ds = new DataSet(DataSetName);2、查看调用SqlDataAdapter.Fill创建的结构 da.Fill(ds,Orders); DataTable tbl = ds.Table0; foreach(DataColumn col in tbl.Columns) Console.WriteLine(col.ColumnName);3、查看SqlDataAdapter返回的数据 、DataRow对象 DataTable tbl = ds.Table0; DataRow ro

9、w = tbl.Row0; Console.WriteLine(rosOrderID);、检查存储在DataRow中的数据 DataTable tbl = row.Table; foreach(DataColumn col in tbl.Columns) Console.WriteLine(rowcol);、检查DatTable中的DataRow对象 foreach(DataRow row in tbl.Rows) DisplayRow(row);4、校验DataSet中的数据 、校验DataColumn的属性:ReadOnly,AllowDBNull,MaxLength,Unique、Dat

10、aTable对象的Constrains集合:UiqueConstraints,Primarykey,ForeignkeyConstraints通常不必刻意去创建ForeignkeyConstraints,因为当在DataSet的两个DataTable对象之间创建关系时会创建一个。、用SqlDataAdapter.Fill模式来检索模式信息5、编写代码创建DataTable对象、创建DataTable对象:DataTable tbl = new DataTable(TableName);、将DataTable添加到DataSet对象的Table集合双击代码全选1234567891011 Data

11、Set ds = new DataSet(); DataTable tbl = new DataTable(Customers); ds.Tables.Add(tbl); DataSet ds = new DataSet(); DataTable tbl = ds.Tables.Add(Customers);DataTable对象只能存在于至多一个DataSet对象中。如果希望将DataTable添加到多个DataSet中,就必须使用Copy方法或Clone方法。Copy方法创建一个与原DataTable结构相同并且包含相同行的新DataTable;Clone方法创建一个与原DataTable结构相同,但没有包含任何行的新DataTable。、为DataTable添加列双击代码全选12

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号