ado.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 以取消更改。
每个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.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的更多相关文章
- ADO:DataSet合并两张表( ds.Merge(ds1))
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- ADO:DataSet存入缓存Cache中并使用
原文发布时间为:2008-08-01 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- Delphi7 ADO面板上的控件简介
? ADO Connection的主要方法:1) Begin Trans 开始启动一个新的事务,必须保证数据连接处于激活状态.2) Cancel 关闭于数据库的连接.3) Commit T ...
- Client Dataset Basics
文章出处: http://www.informit.com/articles/article.aspx?p=24094 In the preceding two chapters, I discus ...
- WPF SDK研究 之 数据绑定
这一章介绍数据绑定.本章共计27个示例,全都在VS2008下.NET3.5测试通过,点击这里下载:ConnectedData.rar 1.ShowDataWithoutBinding注: <?M ...
- ASP.NET的MVC设计模式
当开发者听到“设计模式”这个词时,他们通常联想到两个场景.一组开发者正在讨论许多创造性意见,正在开会,但是却没有进行编码.另外一组人能制定出正确的计划,保证系统能够开发成功,代码可以重用. 而现实一般 ...
- 将Json数据转换为ADO.NET DataSet对象
Json数据转换为ADO.NET DataSet其实方法有很多,Newtonsoft.Json也提供了DataSet的Converter用以转换Json数据.但是有些情况下DataSet Conver ...
- ado.net access oracle dataset via store procedure
使用存储过程返回结果集,并绑定到ado.net对象中在sql server里面是非常直观的. 1: create procedure GetAllRecords 2: as 3: select * f ...
- ADO.NET基础02(语句参数化,配置文件,DataSet与DataTable)
ADO.NET连接池 ado.net默认启用了连接池 *如何清空连接池?Connection的静态方法ClearAllPools(). ClearPool() Ado.net连接池使用总结: 1.第一 ...
随机推荐
- MVC4中Ajax.BeginForm OnSuccess 不执行以及控制器返回JsonResult 提示下载的原因
这几天学习MVC的过程中,在学习Ajax.BeginForm时,一直遇到2个问题: 一. Ajax.BeginForm OnSuccess事件不执行 二.提交表单后,浏览器不识别json字符串,提示下 ...
- 认识RGB和YUV
多年来,对于大部分人来说,对图形信号的认识不外有三种:射频信号,复合视频信号,S视频信号.射频信号是由复合视频信号调到高频上,普通电视机的天线输入信号用于射频信号,复合视频信号的输入出是用RGA端子. ...
- use sql trigger call java function
Use UDF sys_exec to do this. You can use this link to use sys_exec function. It says, sys_exec sys_e ...
- Linq基本用法
- php关于private、public成员变量访问问题
如果类里面定义了__get($name)方法,则不论类的private成员还是public成员,都能够在类的外面通过类似$class->name访问到.如果是public变量,则不会自动调用ge ...
- Android:控件ListView列表项与适配器结合使用
Listview是用来展示一些重复性的数据用的,比如一些列表集合数据展示到手机,需要适配器作为载体获取数据,最后将数据填充到布局. ListView里面的每个子项Item可以使一个字符串,也可以是一个 ...
- Android Spannable
ApiDemo 源码至 com.example.android.apis.text.Link 类. 首先,看一下其运行效果: 要给 TextView 加上效果,方式主要有几种: 第一种,自动应用效果, ...
- python 操作符笔记:
操作符 描述 x if y else z 三元描述(2.5新加)(类似于c中的 x?y:z x or y 或 x and y 与 not x 非 x!=y ,x is y 序列成员测试 x | y 位 ...
- java socket nio编程
上次写了一个socket的基本编程,但是有个问题,阻塞特别严重,于是小编便去找了nio学习了一下... public class TimeServer { public static void mai ...
- asp.net SqlParameter关于Like的传参数无效问题
按常规的思路,我们会这样写 复制代码代码如下: String searchName ="Sam"; String strSql = "select * FROM Tabl ...