DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖与数据库的独立数据集合.所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的.DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不在依赖于数据库链路。
  正是由于DataSet才使得程序员在编程时可以屏蔽数据库之间的差异,从而获得一致的编程模型。DataSet支持多表、表间关系、数据约束等,和关系数据库的模型基本一致。
  DataSet 是 ADO.NET 结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet 由一组 DataTable 对象组成,您可使这些对象与 DataRelation 对象互相关联。您还可通过使用 UniqueConstraint 和 ForeignKeyConstraint 对象在 DataSet 中实施数据完整性。有关使用 DataSet 对象的详细信息,请参见 在 ADO.NET 中使用 DataSet。
  尽管 DataTable 对象中包含数据,但是 DataRelationCollection 允许您遍览表的层次结构。这些表包含在通过 Tables 属性访问的 DataTableCollection 中。当访问 DataTable 对象时,请注意它们是按条件区分大小写的。例如,如果一个 DataTable 被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。有关使用 DataTable 对象的更多信息,请参见 创建 DataTable。
  DataSet 可将数据和架构作为 XML 文档进行读写。数据和架构可通过 HTTP 传输,并在支持 XML 的任何平台上被任何应用程序使用。可使用 WriteXmlSchema 方法将架构保存为 XML 架构,并且可以使用 WriteXml 方法保存架构和数据。若要读取既包含架构也包含数据的 XML 文档,请使用 ReadXml 方法。
  在典型的多层实现中,用于创建和刷新 DataSet 并依次更新原始数据的步骤包括: 
  通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。
  通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。
  调用 GetChanges 方法以创建只反映对数据进行的更改的第二个 DataSet。
  调用 DataAdapter 的 Update 方法,并将第二个 DataSet 作为参数传递。
  调用 Merge 方法将第二个 DataSet 中的更改合并到第一个中。
  针对 DataSet 调用 AcceptChanges。或者,调用 RejectChanges 以取消更改。
 
 
DataSet是ADO.NET中的核心对象. DataSet包含一组DataTable对象.
每个DataTable对象都有一些子对象DataRow和DataColumn, 表示数据库表中的行和列. 通过这些对象可以获取表,行和列中的所有元素.
DataSet的常见操作是用DataAdapter对象的Fill()方法给它填充数据.
访问DataSet中的表:
1. 按表名访问: thisDataSet.Tables["Customers"]  指定DataTable对象Customers
2. 按索引(索引是基于0的)访问: thisDataSet.Tables[0]  指定DataSet中的第一个DataTable.
访问DataTable的行和列:
1. 在每个DataTable中,都有一个Rows属性, 它是DataRow对象的集合.
myDataSet.Tables["Customers"].Rows[n]
在thisDataSet的DataTable对象Customers中指定行号n-1(索引是基于0的).
2. DataRow对象有一个重载的索引符属性, 允许按列名或列号访问各个列.
thisDataSet.Tables["Customers"].Rows[n]["CompanyName"]
实例:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace DataSetReader
{
    class Program
    {
        static void Main(string[] args)
        {
            //string connstring = @"Data Source=ZHANG-1D093B228;Initial Catalog=northwind;User ID=sa;Password=sa";
            //string connstring = @"Server=.;Integrated Security=True; Database=northwind";
            //string connstring = @"Server=ZHANG-1D093B228;Integrated Security=True; Database=northwind";
            string connstring = @"Server=localhost;Integrated Security=True; Database=northwind";

SqlConnection thisconnection = new SqlConnection(connstring );
            string strsql=@"select customerID,ContactName from Customers";
            SqlDataAdapter thisAdapter = new SqlDataAdapter(strsql, thisconnection);
            DataSet thisDataSet = new DataSet();
            thisAdapter.Fill(thisDataSet, "Customers");
            foreach (DataRow therow in thisDataSet.Tables["Customers"].Rows)
            {
                Console.WriteLine(therow["CustomerID"] + "\t" + therow["ContactName"]);
            }
            thisconnection.Close();
            Console.WriteLine("Program finished, press Enter/Return to continue:");
            Console.ReadLine();
        }
    }
}

 

在典型的多层实现中,用于创建和刷新 DataSet 并依次更新原始数据的步骤包括:

1.通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。

2.通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。

3.调用 GetChanges 方法以创建只反映对数据进行的更改的第二个 DataSet。

4.调用 DataAdapter 的 Update 方法,并将第二个 DataSet 作为参数传递。

5.调用 Merge 方法将第二个 DataSet 中的更改合并到第一个中。

6.针对 DataSet 调用 AcceptChanges。或者,调用 RejectChanges 以取消更改。

 
 

ado.dataset的更多相关文章

  1. ADO:DataSet合并两张表( ds.Merge(ds1))

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  2. ADO:DataSet存入缓存Cache中并使用

    原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  3. Delphi7 ADO面板上的控件简介

    ? ADO Connection的主要方法:1) Begin Trans    开始启动一个新的事务,必须保证数据连接处于激活状态.2) Cancel    关闭于数据库的连接.3) Commit T ...

  4. Client Dataset Basics

    文章出处:  http://www.informit.com/articles/article.aspx?p=24094 In the preceding two chapters, I discus ...

  5. WPF SDK研究 之 数据绑定

    这一章介绍数据绑定.本章共计27个示例,全都在VS2008下.NET3.5测试通过,点击这里下载:ConnectedData.rar 1.ShowDataWithoutBinding注: <?M ...

  6. ASP.NET的MVC设计模式

    当开发者听到“设计模式”这个词时,他们通常联想到两个场景.一组开发者正在讨论许多创造性意见,正在开会,但是却没有进行编码.另外一组人能制定出正确的计划,保证系统能够开发成功,代码可以重用. 而现实一般 ...

  7. 将Json数据转换为ADO.NET DataSet对象

    Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...

  8. ado.net access oracle dataset via store procedure

    使用存储过程返回结果集,并绑定到ado.net对象中在sql server里面是非常直观的. 1: create procedure GetAllRecords 2: as 3: select * f ...

  9. ADO.NET基础02(语句参数化,配置文件,DataSet与DataTable)

    ADO.NET连接池 ado.net默认启用了连接池 *如何清空连接池?Connection的静态方法ClearAllPools(). ClearPool() Ado.net连接池使用总结: 1.第一 ...

随机推荐

  1. tcpprep 对IPV6的支持

    在采用tcpreplay对包实施回放前,需要对包执行预处理,tcpprep就是完成这个任务的.tcpprep要做的处理就是生成一个cache文件,根据tcpprep wiki的介绍http://tcp ...

  2. zoj 3777

    状态压缩dp #include<cstdio> #include<cstring> #include<algorithm> #define maxn 4100 us ...

  3. ActivePython2.7 +Firefly1.2.2+WIN7服务器搭建过程(已通过)

    原地址:http://www.9miao.com/question-15-54027.html 1.ActivePython2.7 版本(内部已经包含easy_install,pywin32)2.所需 ...

  4. POJ3283+字典树

    简单的字典树 /* 字典树 构造字典树.注意初始化! */ #include<stdio.h> #include<string.h> #include<stdlib.h& ...

  5. hdu 4664 Triangulation 博弈论

    看到这题时,当时还不会做,也没搞懂sg函数,于是狠狠的钻研了下博弈论,渐渐的知道了sg函数…… 现在在来做这题就很容易了,1A 打表容易发现在80左右的时候就出现循环节了 代码如下: #include ...

  6. spring结合时,web.xml的配置

    <!-- 1. web.xml配置 <context-param> <param-name>webAppRootKey</param-name> <pa ...

  7. Android:ViewPager适配器PagerAdapter的使用

    PageAdapter是一个抽象类,直接继承于Object,导入包android.support.v4.view.PagerAdapter即可使用. 要使用PagerAdapter, 首先要继承Pag ...

  8. P112、面试题16:反转链表

    题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点.链表结点定义如下:struct ListNode{      int    m_nKey;      ListNode* ...

  9. puppet&mcollective客户端安装

    一.环境: 1.客户端:            fedora 19 2.DnsServer:     192.168.0.160 3.server1.xxx.com(10.8.1.201):运行以下服 ...

  10. request对象常用API 获取请求参数的值 request应用 MVC设计模式

    1 request对象常用API   1)表示web浏览器向web服务端的请求   2)url表示访问web应用的完整路径:http://localhost:8080/day06/Demo1     ...