DataSet与DataTable基本用法

http://files.cnblogs.com/files/monkeyZhong/DataSetExample.rar

在设计数据库操作或者XML操作等表格数据时,我们难免要跟DataSet和DataTable打交道,我们这里就介绍下这几个类的用法:

首先介绍DataTable,其实就是一个二维表格,没那么悬乎,举个构造的例子:

            DataTable dt = new DataTable("Customers");
            dt.Columns.Add("CustomerID", typeof(Int32));
            dt.Columns.Add("CustomerName", typeof(String));
            dt.Columns.Add("Description", typeof(string));
            DataRow row = dt.NewRow();
            row[0] = 001;
            row[1] = "大众";
            row[2] = "中档车";
            dt.Rows.Add(row);

            DataRow row2 = dt.NewRow();
            row2[0] = 002;
            row2[1] = "奔驰";
            row2[2] = "豪车";
            dt.Rows.Add(row2);

这就构造了一个二行三列的二维表了。

其次就是DataSet:我们可以把它看做是DataTable的集合容器,我们可以往里面添加很多表。比如:

1             customerOrders = new DataSet();
2             customerOrders.Tables.Add(customerTable);
3             customerOrders.Tables.Add(orderTable);
4             customerOrders.Tables.Add(orderDetailTable);
5             customerOrders.Tables.Add(ProductTable);

这里就添加了四个表。

当然,DataSet还有其他的内容,这里我平时用得少但是很重要的地方就是DataRelation,这个我们可以想成表与表之间通过某列来建立一个联系,这样我们就可以通过某行的GetChildRows得到子列的行集合(满足关系),或者通过GetParentRow得到父列的行。

 1            DataRelation customerOrdersRelation = new DataRelation("CustOrders",
 2                 customerOrders.Tables["Customers"].Columns["CustomerID"],
 3                 customerOrders.Tables["Orders"].Columns["CustomerID"]);
 4             customerOrders.Relations.Add(customerOrdersRelation);
 5             DataRelation orderDetailRelation = customerOrders.Relations.Add("OrderDetail",
 6                 customerOrders.Tables["Orders"].Columns["OrderID"],
 7                 customerOrders.Tables["OrderDetails"].Columns["OrderID"], false);
 8             DataRelation orderProductRelation = customerOrders.Relations.Add("OrderProducts",
 9                 customerOrders.Tables["Product"].Columns["ProductID"],
10                 customerOrders.Tables["OrderDetails"].Columns["ProductID"]);
11
12             DataRow[] rows = customerOrders.Tables["Customers"].Rows[0].GetChildRows(customerOrdersRelation);
13             DataTable dt = orderTable.Clone();
14             foreach (DataRow row in rows)
15             {
16                 dt.ImportRow(row);
17
18             }
19
20             StringBuilder sw = new StringBuilder();
21             foreach (DataRow custRow in customerOrders.Tables["Customers"].Rows)
22             {
23                 sw.AppendLine("Customer ID:" + custRow["CustomerID"]);
24                 foreach (DataRow orderRow in custRow.GetChildRows(customerOrdersRelation))
25                 {
26                     sw.AppendLine("    Order ID:" + orderRow["OrderID"]);
27                     sw.AppendLine("\tOrder Date:" + orderRow["DateTime"]);
28                     foreach (DataRow detailRow in orderRow.GetChildRows(orderDetailRelation))
29                     {
30                         sw.AppendLine("\tProduct" + detailRow.GetParentRow(orderProductRelation)["ProductName"]);
31                     }
32                 }
33             }

子行可以有很多,但是父行只有一行。
至于那些外键,主键,约束,以及更新表的时候的一些操作,因为涉及到数据库的很多知识,这里就不做描述了,我们侧重这两个类的用法。

时间: 2024-10-11 03:42:42

DataSet与DataTable基本用法的相关文章

C# DataSet与DataTable的区别和用法

DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable.DataSet和DataTable像是专门存储数据的一个容器,在你查询数据库得到一些结果时可以存在里面. DataSet功能强大有浏览.排序.搜索.过滤.处理分级数据.缓存更改等功能,还可以与XML数据互换.DataSet中可包括多个DataTable,可将多个查询结构存到一个DataSet中,方便操作 ADO.NET开发人员为方便数据处理开发出来的,是数据的集合,为解决DataReader的缺陷设计的

关于PagedDataSource分页属性与DataSet和DataTable详解

Asp.net提供了三个功能强大的列表控件:DataGrid.DataList和Repeater控件,但其中只有DataGrid控件提供分页功能.相对DataGrid,DataList和Repeater控件具有更高的样式自定义性,所以很多时候我们喜欢使用DataList或Repeater控件来显示数据. PagedDataSource 类封装 DataGrid 控件的属性,这些属性使 DataGrid 可以执行分页.PagedDataSource 类的部分公共属性: AllowCustomPag

DataSet、DataTable、DataRow的数据复制方法

DataSet 对象是支持 ADO.NET的断开式.分布式数据方案的核心对象 ,用途非常广泛.我们很多时候需要使用其中的数据,比如取得一个DataTable的数据或者复制另一个DataTabe中的数据或者是DataRow的数据,但是只有DataSet和DataTable的复制是支持深层复制的,就是说不仅能复制元素的结构,而且能复制元素的数据,而DatatDataRow没有相关的复制的方法,下面将简单介绍下这些数据元素的复制问题. DataTable sourceTable; DataTable

DataSet和DataTable区别

DataSet和DataTable区别 da.Fill(ds, "alias_1"); //使用DataAdapter的Fill方法(填充),调用SELECT命令,别名 dataGridView8.DataSource = ds.Tables[0]; da.Fill(dt);       //直接填充给dt flex.DataSource = dt; ds.Tables[0]==dt DateSet是数据在内存中的缓存,是保存数据的数据结构,相当于一个虚拟的数据库,他可以包含多个Dat

DataSet、DataTable、DataRow、DataColumn区别及使用实例

DataSet 表示数据在内存中的缓存. 属性 Tables  获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的一个表. 公共属性 Columns 获取属于该表的列的集合. DataSet 获取此表所属的 DataSet. DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图. PrimaryKey 获取或设置充当数据表主键的列的数组. Rows 获取属于该表的行的集合. TableName 获取或设

DataSet与DataTable对象

DataSet与DataTable对象 摘自:http://www.cnblogs.com/fttbfttb/articles/1509662.html DataSet对象 DataSet是ADO.NET中最核心的成员之一,是各种基于.NET平台程序语言(如VB.NET.C#.NET.C++.NET)的数据库应用程序开发最常接触的类,这是因为DataSet在ADO.NET实现从数据库中抽取数据的作用.数据抽取后,DataSet就是数据的存放地,它是各种数据源(SQL Server .OLE DB

使用 AutoMapper 映射 IDataReader、DataSet、DataTable 到实体类

AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/AutoMapper/AutoMapper/wiki 主要用途 领域对象与DTO之间的转换.数据库查询结果映射至实体对象. 这里主要说下使用 AutoMapper 将 IDataReader.DataSet.DataTable 转为实体的方法. 依赖文件:AutoMapper.dll.AutoMapper

Asp.net中XML与DataSet、DataTable之间的转换

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Xml; using System.IO; using System.Web; namespace Utility { /// <summary> /// 把DataSet.DataTable.DataView格式转换成XML字符串.XML文件 /// </summary> public

转:DataSet、DataTable、DataRow、DataColumn区别及使用实例

DataSet 表示数据在内存中的缓存. 属性 Tables  获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的一个表. 公共属性 Columns 获取属于该表的列的集合. DataSet 获取此表所属的 DataSet. DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图. PrimaryKey 获取或设置充当数据表主键的列的数组. Rows 获取属于该表的行的集合. TableName 获取或设