DATASET()用法

DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。

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

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

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

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

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

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

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

需要注意的是:dataset所有数据都加载在内存上执行的,可以提高数据访问速度,提高硬盘数据的安全性。极大的改善了程序运行的速度和稳定性。

使用方法

1、创建DataSet对象

DataSet ds = new DataSet();

DataSet ds = new DataSet("DataSetName");

2、用数据集填充DataSet

最常用的是DataAdapter对象的Fill()方法给他填充数据

(1)

DataSet ds = new DataSet();

SqlDataAdapter adapt = new SqlDataAdapter(sqlcmd,con)

adapt.Fill(ds,"mytest");

(2)

DataSet ds=new DataSet();

DataTable dt=new DataTable("newTable");

ds.Tables.Add(dt);

(3)

DataSet ds=new DataSet();

DataTable dt=ds.Tables.Add("newTable");

3、访问DataSet中的表、行和列 值

(1): 访问每个 DataTable

按表名访问:ds.Tables["mytest"] //指定DataTable对象mytest(即访问DataSet中名为mytest的DataTable)

按索引(索引基于0的)访问:ds.Tables[0] //指定DataSet中的第一个DataTable

(2): 访问DataTable中的行

ds.Tables["mytest"].Rows[n] //访问mytest表 的第n+1行(行的索引是从0开始的)

ds.Tables[i].Rows[n] //访问DataSet中的第i+1个DataTable 的第n+1列(列的索引是从0开始的)

(3): 访问DataTable中的某个元素

ds.Tables["mytest"].Rows[n][m] //访问mytest表的第n+1行第m+1列的元素

ds.Tables[i].Rows[n][m] //访问DataSet中的第i+1个DataTable 表的第n+1行第m+1列的元素

ds.Tables["mytest"].Rows[n][name] //访问mytest表的第n+1行name列的元素

ds.Tables[i].Rows[n][name] //访问DataSet中的第i+1个DataTable 表的第n+1行name列的元素

(4): 取DataTable中的列名

ds.Tables["mytest"].Columns[n] //取出mytest表的n+1列列名

ds.Tables[i].Columns[n]

4、实例

using System;

using System.Collections.Generic;

using System.Text;

using System.Data.SqlClient;

using System.Data;

namespace sqlconnection1

{

class Program

{

private void SQLConnectionF(string source, string select)

{

//创建连接

SqlConnection con = new SqlConnection(source);

SqlDataAdapter adapt = new SqlDataAdapter(select,con);

try

{

con.Open();

Console.WriteLine("connection is successful!");

}

catch (Exception e)

{

Console.WriteLine("connection error is :{0}", e.ToString());

}

//创建DataSet

DataSet ds = new DataSet();

//将数据添加到DataSet中

adapt.Fill(ds,"mytest");

//取出mytest表各列名

Console.WriteLine("{0,-15} {1,-10} {2,-10}",ds.Tables["mytest"].Columns[0],

ds.Tables["mytest"].Columns[1],ds.Tables["mytest"].Columns[2]);

//输出mytest表中第六行

DataRow row1 = ds.Tables["mytest"].Rows[5];

Console.WriteLine("{0,-15} {1,-10} {2,-10}",row1[0],row1[1],row1[2]);

//输出mytest表中第五行的第二列的值

DataRow row2 = ds.Tables["mytest"].Rows[4];

Console.WriteLine(" {0,-25} ", row2[1]);

//下列两种方法等效都等同于row2[1](即第五行的第二列的值)

Console.WriteLine(" {0,-25} ", ds.Tables["mytest"].Rows[4][1]);

Console.WriteLine(" {0,-25} ", ds.Tables["mytest"].Rows[4]["number"]);

//输出DataSet中的所有数据

foreach (DataRow row in ds.Tables["mytest"].Rows)

{

Console.WriteLine("{0,-15} {1,-10} {2,-10} {3}",row["name"] ,

row["number"] , row["low"] , row["high"]);

//取第三列的值

Console.WriteLine("{0,-15} ", row[3]);

}

Console.ReadLine();

con.Close();

}

static void Main(string[] args)

{

string sou = "server=duanyf\\SQLEXPRESS;" + "Initial Catalog=master;" + "UID = sa;" + "Password = dyf123";

string sel = "SELECT name,number,low,high From dbo.spt_values";

Program sqlcon = new Program();

sqlcon.SQLConnectionF(sou, sel);

}

}

}

--------------------- 本文来自 Andrewniu 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/andrewniu/article/details/53065522?utm_source=copy

原文地址:https://www.cnblogs.com/asdyzh/p/9739369.html

时间: 2024-10-12 16:34:17

DATASET()用法的相关文章

dataset 用法(1)

DataSet是表和列结构在内存中的表示方式,DataSet支持多表.表间关系.数据约束等,和关系数据库的模型基本一致.(本质上是微型的数据库.包含一组DataTable对象和DataTable之间的连接关系.不包含数据库连接的概念,也就是说其中的数据可以不是来自数据库,可以是读取的文件中的数据.DataTable包含一些DataRow和DataColumn表示数据库表中的行和列,通过他们可以获取表.行和列的元素,且支持主键和外键. DataSet的数据集是与数据库断开的,DataSet中可包括

dataset 用法(2)

1.为DataTable添加列 (1)添加列 DataTable  tbl = ds.Tables.Add("User"); DataColumn col =tbl.Columns.Add("UserID",typeof(int)); col.AllowDBNull = false; col.MaxLength = 6; col.Unique = true; tbl.PrimaryKey = new DataColumn[]{tbl.Columns["Us

DataSet用法详细 转

一.特点介绍 1.处理脱机数据,在多层应用程序中很有用.2.可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法.3.处理分级数据4.缓存更改5.XML的完整性:DataSet对象和XML文档几乎是可互换的. 二.使用介绍 1.创建DataSet对象: DataSetds = new DataSet("DataSetName"); 2.查看调用SqlDataAdapter.Fill创建的结构 da.Fill(ds,"Orders"); DataTa

dataset 用法(3)

ReadXml 提供了只将数据或同时将数据和架构从 XML 文档读入 DataSet 的方式(若要同时读数据和架构,请使用包括 mode 参数的 ReadXML 重载之一,并将其值设置为 ReadSchema).ReadXmlSchema 方法仅读架构. 对于 WriteXml 和 WriteXmlSchema 方法也是如此.若要写入来自 DataSet 的 XML 数据或架构和数据两者,使用 WriteXml 方法.若要只写入架构,请使用 WriteXmlSchema 方法. XML 数据可直

关于DataSet事务处理以及SqlDataAdapter四种用法

如果是直接执行SQL语句时,事务很好处理,对于大多数的Erp应用,不能能用SQL来处理数据,所以更新DataSet更为常用,更新单个的DataSet也非常简单,不需要事务的处理,给多个DataSet增加事务多数应用于分布式的程序代码中,下面为在Webservice中更新Winform传递过来的经过压缩的数据集的事务处理代码,多个DataSet 情况. /// <summary> /// 更新经过压缩的DataSet /// </summary> /// <param >

C#里sqlDataAdapter.fill(DataSet,String)的用法

第二个参数 String是指定DataSet 里表的名字,例如 sqlDataAdapter.fill(DataSet,"学生表") 指定后,以后就可以这样调用这张表 DataSet.Tables["学生表"] 第二个参数可以不要的,如果不要第二个参数 String 那你调用这张表只能通过索引号,例如 DataSet.Tables[0] 如果填充的表比较多的话,用这个参数比较容易管理和调用. C#里sqlDataAdapter.fill(DataSet,String

DataSet与DataTable基本用法

http://files.cnblogs.com/files/monkeyZhong/DataSetExample.rar 在设计数据库操作或者XML操作等表格数据时,我们难免要跟DataSet和DataTable打交道,我们这里就介绍下这几个类的用法: 首先介绍DataTable,其实就是一个二维表格,没那么悬乎,举个构造的例子: DataTable dt = new DataTable("Customers"); dt.Columns.Add("CustomerID&qu

C# DataSet与DataTable的区别和用法

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

C# DataSet的基本用法

  首先我们需要打开一个联结: string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;"; string strComm = "select * from UserList"; ADOConnection MyConnection = new ADOConnection(MyConnString); ADODataSetCommand MyComm