DataSet对象深入剖析

上传人:宝路 文档编号:4343606 上传时间:2017-08-18 格式:DOCX 页数:6 大小:47.77KB
返回 下载 相关 举报
DataSet对象深入剖析_第1页
第1页 / 共6页
DataSet对象深入剖析_第2页
第2页 / 共6页
DataSet对象深入剖析_第3页
第3页 / 共6页
DataSet对象深入剖析_第4页
第4页 / 共6页
DataSet对象深入剖析_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《DataSet对象深入剖析》由会员分享,可在线阅读,更多相关《DataSet对象深入剖析(6页珍藏版)》请在金锄头文库上搜索。

1、深入分析 ADO.NET 中的 DataSet 对象ADO.NET 是.Net FrameWork SDK 中用以操作数据库的类库的总称。而 DataSet 类则是 ADO.NET 中最核心的成员之一,也是各种开发基于.Net 平台程序语言开发数据库应用程序最常接触的类。之所以 DataSet 类在 ADO.NET 中具有特殊的地位,是因为DataSet 在 ADO.NET 实现从数据库抽取数据中起到关键作用,在从数据库完成数据抽取后,DataSet 就是数据的存放地,它是各种数据源中的数据在计算机内存中映射成的缓存,所以有时说 DataSet 可以看成是一个数据容器。同时它在客户端实现读取、

2、更新数据库等过程中起到了中间部件的作用(DataReader 只能检索数据库中的数据)。各种.Net 平台开发语言开发数据库应用程序,一般并不直接对数据库操作(直接在程序中调用存储过程等除外),而是先完成数据连接和通过数据适配器填充 DataSet 对象,然后客户端再通过读取 DataSet 来获得需要的数据,同样更新数据库中数据,也是首先更新 DataSet,然后再通过 DataSet 来更新数据库中对应的数据的。可见了解、掌握ADO.NET,首先必须了解、掌握 DataSet。DataSet 主要有三个特性:1. 独立性。DataSet 独立于各种数据源。微软公司在推出 DataSet 时

3、就考虑到各种数据源的多样性、复杂性。在.Net 中,无论什么类型数据源,它都会提供一致的关系编程模型,而这就是 DataSet。2. 离线(断开)和连接。DataSet 既可以以离线方式,也可以以实时连接来操作数据库中的数据。这一点有点像 ADO 中的 RecordSet。3. DataSet 对象是一个可以用 XML 形式表示的数据视图,是一种数据关系视图。一.DataSet 对象的结构模型及和 RecordSet 的比较虽说 ADO.NET 是 ADO 在.Net 平台下得后继版本,但二者的区别是很大的。突出表现在 ADO 中的 RecordSet 对象和 ADO.NET 中的 DataS

4、et 对象。RecordSet 其实也是非常灵活的一个对象,微软公司推出它也是煞费苦心,如:RecordSet 可以离线操作数据库,性能优良,效率较高等等这些都让当时的程序员为之一振。RecordSet 虽然已经很复杂,但 DataSet 却比 RecordSet 复杂的多,我们知道每一 DataSet 往往是一个或多个DataTable 对象的集合,这些对象由数据行和数据列以及主键、外键、约束和有关DataTable 对象中数据的关系信息组成。而 RecordSet 只能存放单张数据表,虽然这张数据表可以由几张数据表 JOIN 生成。所以有些时候说,RecordSet 更类似于 DataSe

5、t 中的DataTable。DataSet 对象的结构模型如图 01 所示:图 01:DataSet 对象的结构模型图通过图 01 可见在 DataSet 对象结构还是非常复杂的,在 DataSet 对象的下一层中是DataTableCollection 对象、DataRelationCollection 对象和 ExtendedProperties 对象。上文已经说过,每一个 DataSet 对象是由若干个 DataTable 对象组成。DataTableCollection就是管理 DataSet 中的所有 DataTable 对象。表示 DataSet 中两个 DataTable 对象之

6、间的父/子关系是 DataRelation 对象。它使一个 DataTable 中的行与另一个 DataTable 中的行相关联。这种关联类似于关系数据库中数据表之间的主键列和外键列之间的关联。DataRelationCollection 对象就是管理 DataSet 中所有 DataTable 之间的 DataRelation 关系的。在 DataSet 中 DataSet、DataTable 和 DataColumn 都具有 ExtendedProperties 属性。ExtendedProperties 其实是一个属性集(PropertyCollection),用以存放各种自定义数据,如

7、生成数据集的 SELECT 语句等。二使用 DataSet:DataSet 其实就是数据集,上文已经说过 DataSet 是把数据库中的数据映射到内存缓存中的所构成的数据容器,对于任何数据源,它都提供一致的关系编程模型。在 DataSet中既定义了数据表的约束关系以及数据表之间的关系,还可以对数据表中的数据进行排序等。DataSet 使用方法一般有三种:1. 把数据库中的数据通过 DataAdapter 对象填充 DataSet。 2. 通过 DataAdapter 对象操作 DataSet 实现更新数据库。3. 把 XML 数据流或文本加载到 DataSet。下面就来详细探讨以上 DataS

8、et 使用方法的具体实现,使用语言是 C。1. 把数据库中的数据通过 DataAdapter 对象填充 DataSet:掌握 DataSet 使用方法必须掌握 ADO.NET 另外一个核心常用成员-数据提供者(Data Provider)。数据提供者(也称为托管提供者 Managed Provider)是一个类集合,在.Net FrameWork SDK 1.0 中数据提供者分为二种:The SQL Server .NET Data Provider 和 The OLE DB .NET Data Provider。而到了.Net FrameWork SDK 1.1 时,ADO.NET 中又增加

9、了 The ODBC .NET Data Provider 和 The Oracle .NET Data Provider二个数据提供者。The SQL Server .NET Data Provider 的操作数据库对象只限于 Sql Server 7.0 及以上版本, Oracle .NET Data Provider 的操作数据库对象只限于 Oracle 8.1.7 及以上版本。而 The OLE DB .NET Data Provider 和 The ODBC .NET Data Provider 可操作的数据库类型就相对多了许多,只要它们在本地分别提供 Ole Db 提供程序和 OD

10、BC 提供程序。在这些数据提供者中都有一个 DataAdapter 类,如: OLE DB .NET Framework 数据提供者中是 OleDbDataAdapter 类,The SQL Server .NET Framework 数据提供者中是SqlDataAdapter 类,The ODBC .NET Framework 数据提供者中是 OdbcDataAdapter 类。通过这些 DataAdapter 就能够实现从数据库中检索数据并填充 DataSet 中的表。DataAdapter 填充 DataSet 的过程分为二步:首先通过 DataAdapter 的SelectComman

11、d 属性从数据库中检索出需要的数据。SelectCommand 其实是一个Command 对象。然后再通过 DataAdapter 的 Fill 方法把检索来的数据填充 DataSet。代码清单 01 就是以 Microsoft SQL Server 中的 Northwind 数据库为对象,C使用 The SQL Server .NET Data Provider 中的 SqlDataAdapter 填充 DataSet 的具体实现方法:代码清单 01:SqlConnection sqlConnection1 = new SqlConnection ( Data Source=localhos

12、t ;Integrated Security=SSPI ;Initial Catalog=Northwind ) ;/创建数据连接SqlCommand selectCMD = new SqlCommand ( SELECT CustomerID , CompanyName FROM Customers , sqlConnection1 ) ;/创建并初始化 SqlCommand 对象SqlDataAdapter sqlDataAdapter1 = new SqlDataAdapter ( ) ;custDA.SelectCommand = selectCMD ;sqlConnection.Op

13、en ( ) ;/创建 SqlDataAdapter 对象,并根据 SelectCommand 属性检索数据DataSet dsDataSet1 = new DataSet ( ) ;sqlDataAdapter1.Fill ( dsDataSet1 , Customers ) ;/使用 SqlDataAdapter 的 Fill 方法填充 DataSetsqlConnection.Close ( ) ;/关闭数据连接对于其他数据提供者的 DataAdapter,具体的实现检索数据库中的数据并填充DataSet 的实现方法类似于以上方法。2. 通过 DataAdapter 对象操作 DataS

14、et 实现更新数据库:DataAdapter 是通过其 Update 方法实现以 DataSet 中数据来更新数据库的。当DataSet 实例中包含数据发生更改后,此时调用 Update 方法,DataAdapter 将分析已作出的更改并执行相应的命令(INSERT 、UPDATE 或 DELETE),并以此命令来更新数据库中的数据。如果 DataSet 中的 DataTable 是映射到单个数据库表或从单个数据库表生成,则可以利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand、InsertCommand 和 UpdateCommand。使

15、用 DataAdapter 对象操作DataSet 实现更新数据库具体的实现方法,只需把下面的代码清单 02 添加到代码清单 01之后,二者合并即可实现删除 Customers 数据表中第一行数据:代码清单 02:SqlCommandBuilder sqlCommandBuilder1 = new SqlCommandBuilder ( sqlDataAdapter1 ) ;/以 sqlDataAdapter1 为参数来初始化 SqlCommandBuilder 实例dsDataSet1.TablesCustomers.Rows0.Delete ( ) ;/删除 DataSet 中删除数据表

16、Customers 中第一行数据sqlDataAdapter1.Update ( dsDataSet1 ,Customers ) ;/调用 Update 方法,以 DataSet 中的数据更新从数据库dsDataSet1.TablesCustomers.AcceptChanges ( ) ;由于不了解 DataSet 结构和与数据库关系,很多初学者往往只是更新了 DataSet 中的数据,就认为数据库中的数据也随之更新,所以当打开数据库浏览时发现并没有更新数据,都会比较疑惑,通过上面的介绍,疑惑应当能够消除了。3. XML 和 DataSet:DataSet 中的数据可以从 XML 数据流或文档创建。并且.Net Framework 可以控制加载 XML 数据流或文档中那些数据以及如何创建 DataSet 的关系结构。加载 XML 数据流和文档到 DataSet 中是可使用 DataSet 对象的 ReadXml 方法(注意:ReadXml 来加载非常大的文件,则性能会有所下

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题 > 初中试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号