ado.dataset

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 [email protected]"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

时间: 2024-12-18 15:36:17

ado.dataset的相关文章

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

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

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

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

Delphi7 ADO面板上的控件简介

Delphi7 ADO面板上的控件简介 一. TADO Connection组件 该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等. 该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其Connection String属性,可以直接连接到数据库.但是如果多个数据集使用相同的数据库连接时,则使用TADO Connection就有一定的优势,因为不必为每个数据集都单独建立数据库的连

Ado.net中DataSet和SqlDataReader的区别

概述: 一,SqlDataReader //基于连接,只读访问 适合数据量较小. SqlDataAdapter //基于非连接,适于数据量较大时,可以另行修改,最后再把修改结果返回给数据库.要求资源也大一点 二,SqlDataAdapter 读取数据后将数据集放入DataSet ,DataSet 的数据存在本地客服机内存. 三,SqlDataReader返回的是一个数据读写器,只能一条条的读,操作起来不灵活,一般在只读的时候才用到. SqlDataAdapter返回的是数据集或者表,可以对其中的

(3)C#之ADO.Net 数据集(DataSet)

DataSet是ADO.Net的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合.(来自百度百科) 下面写一段代码来示例DataSet的用法:(下面这段代码是一个按钮的Click事件) 1 using(SqlConnection conn = new SqlConnection("Data Source=PC201507182002\\SQLEXPRESS;Initial Catalog=123456;Integrated Security=True

ADO.NET之填充DataSet类

主要使用数据适配器SqlDataAdapter类进行填充DataSet类 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data; namespace ConsoleApplication1 { class Progr

ADO.NET之9-非连接模式,内存中的数据库DataSet,DataTable---ShinePans

DataSet被称作数据集,可以比作内存中的数据库,DataSet为ADO.NET核心,支持ADO.NET断开式,分布式数据方案的核心对象也是实现基于非连接的数据查询核心组件 DataTable常用属性: 属性 说明 Columns 获取属于该表的列的集合 Rows 获取属于该表的行的集合 TableName 获取或设置DataTable的名称 DataTable方法: 方法 说明 AcceptChanges 提交自上次调用AcceptChanges以来对该表进行的所有更改 Clear 清除Da

ADO.NET之DataSet类

DataSet相当于一个小型数据库,通过它可以管理数据和关系 1.将sql代码的返回结果填充到该类中,然后从该类中读取,显示.(类似于Sqldatareader类) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data; nam

【ADO.NET基础知识】SqlConnection、command、DataSet 、DataTable、dataAdapter

1.使用Connection连接数据库的步骤: (1).添加命名空间 System.Data.SqlClient(注意:初学者经常会忘记) (2)定义连接字符串.连接SQL Server 数据库时: server=服务器名;database=数据库名;uid=用户名;pwd=密码;例如:要连接本机上的StudentManagement数据库,用户名为sa,密码为111 string connString="server=.;database=StudentManagement;uid=sa;pw