简介用ADO.NET DataSet访问数据

ZDNet软件频道 时间:2003-04-09 作者:周靖 译 |  我要评论()
本文关键词:
ADO.NET的对象层次结构中没有Recordset,相反,ADO.NET用一个新的和更强大的组件来提供ADO的Recordset的功能:DataSet。本文概述了什么是DataSet,它如何工作,以及如何用它访问数据。
本文译自Builder.comADO.NET的对象层次结构中没有Recordset,这让很多ADO开发者大吃一惊。相反,ADO.NET用一个新的和更强大的组件来提供ADO的Recordset的功能:DataSet。本文概述了什么是DataSet,它如何工作,以及如何用它访问数据。

DataSet简介

DataSet(数据集)位于System.Data命名空间,被精确定义成一个独立于提供程序的、驻留于内存的以及断开的关系型数据结构。针对它所表示的数据,DataSet支持标准的查看、添加、移除及更新操作;而且这些操作并非只限于数据库数据。DataSet由以下几个组件构成:

  • DataTable:一个或多个DataTable对象使用熟悉的行、列格式表示来自一个数据源的数据。
  • DataRow:每个DataTable都包含多个DataRow对象,以记录或类似于记录的布局,包含来自数据源的数据。
  • DataColumn:多个DataColumn对象为每个DataRow都定义了列。

DataSet完全独立于提供程序;换言之,它们没有任何一种功能需要依赖你用于连接数据源的底层提供程序。由于DataSet是“断开”的,所以在DataSet对象的整个生命期,底层连接都不必开放。这样一来,就可高效率地使用当前可用的数据库连接。

可采取几种方式在DataSet中填充数据:通过底层提供程序特有的一系列命令对象来填充,从一个XML文档或者文档片断中填充数据,或者手工提供数据。本文强调的是从数据库中获取数据,因为这可能是你想执行的第一个任务。但要注意的是,DataSet非常灵活,并不一定要用一个源数据库来提供数据。

DataAdapter:中间层

DataAdapter负责在独立于提供程序的DataSet和提供程序特有的连接及命令对象之间进行转换。一个DataSet的DataAdapter最多可用4个内部命令对象来获取、更新、插入及删除数据。可用以下4个公共属性来设置或获取这些命令对象:

  • SelectCommand:从数据源获取数据,以便填充一个DataSet。
  • InsertCommand:将添加到DataSet的新数据插入数据源。
  • UpdateCommand:根据对DataSet中的数据进行的修改来更新现有数据。
  • DeleteCommand:数据从DataSet删除时,就删除现有数据。

DataAdapter类是抽象类,不可直接创建它。相反,你需要使用某个提供程序特有的派生子类。例如,要根据SQL Server数据库中一个假想的Customers表来构造DataSet,就需要使用System.Data.SqlClient.SqlDataAdapter类。可用以下C#代码来完成这个任务(假定已创建好名为cnSqlConnection):

 SqlCommand cm = new SqlCommand("SELECT * FROM Customers;",conn);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = cm;
DataSet ds = new DataSet();
sda.Fill(ds);
 
创建好表示想要运行的查询的一个SqlCommand后,需要新建一个SqlDataAdapter类。还要使用SelectCommand属性,将刚才创建的SqlCommand(本例为cm)设为用于适配器的SelectCommand。注意为了使用一个适配器,不一定要为它定义全部4个命令。还可将SELECT语句传给SqlDataAdapter的构造函数方法。接着,使用适配器的Fill方法向DataSet填充数据。之后,cn连接就不必打开了。把它关闭,对数据不会有任何影响。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134