ADO.NET整体思路

(一)ADO.NET 概述

ADO.NET 对 Microsoft SQL Server 和 XML 等数据源以及通过 OLE DB 和 XML 公开的数据源提供一致的访问。数据共享使用者应用程序可以使用 ADO.NET 来连接到这些数据源,并检索、处理和更新所包含的数据。

ADO.NET 通过数据处理将数据访问分解为多个可以单独使用或一前一后使用的不连续组件。ADO.NET 包含用于连接到数据库、执行命令和检索结果的 .NET Framework 数据提供程序。您可以直接处理检索到的结果,或将其放入 ADO.NET DataSet 对象,以便与来自多个源的数据或在层之间进行远程处理的数据组合在一起,以特殊方式向用户公开。ADO.NET DataSet 对象也可以独立于 .NET Framework 数据提供程序使用,以管理应用程序本地的数据或源自 XML 的数据。

ADO.NET 类在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,请引用 System.Data.dll 和 System.Xml.dll。有关连接到数据库、从数据库中检索数据并在命令提示中显示该数据的 ADO.NET 应用程序示例,请参见 ADO.NET 示例应用程序

ADO.NET 向编写托管代码的开发人员提供了类似于 ActiveX 数据对象 (ADO) 为本机组件对象模块 (COM) 开发人员提供的功能。有关 ADO 和 ADO.NET 之间的差异的讨论,请参见 MSDN 上的 ADO.NET for the ADO Programmer

本节内容

ADO.NET 的设计目标

讨论创建 ADO.NET 的动机和设计目标。

ADO.NET 结构

提供 ADO.NET 结构和组件的概述。

.NET Framework 数据提供程序

提供有关 .NET Framework 数据提供程序的设计的概述以及有关随 ADO.NET 提供的 .NET Framework 数据提供程序的概述。

ADO.NET DataSet

提供有关 DataSet 设计和组件的概述。

并行执行和 ADO.NET

讨论 ADO.NET 各版本之间的差异及其对并行执行和应用程序兼容性的影响。

ADO.NET 示例应用程序

提供 ADO.NET 应用程序的示例,该示例从数据库中检索数据并将其返回到控制台。

相关章节

ADO.NET 中的新增功能

介绍 ADO.NET 中的新增功能。

保证 ADO.NET 应用程序的安全

描述使用 ADO.NET 时的安全编码方法。

ADO.NET 中使用 DataSet

描述如何创建和使用 DataSets、类型化 DataSets、DataTables 和 DataViews。

ADO.NET 中连接和检索数据

描述如何连接到数据源并检索数据,包括 DataReaders 和 DataAdapters。

ADO.NET 中修改数据

描述如何修改数据库中的数据以及如何使用事务。

使用 SQL Server .NET Framework 数据提供程序

描述如何使用 SQL Server 特定的功能。

使用 Oracle .NET Framework 数据提供程序

描述 Oracle .NET Framework 数据提供程序特定的功能和行为。

使用 SQL Server 公共语言运行库集成

描述如何从 SQL Server 2005 的公共语言运行库 (CLR) 数据库对象中访问数据。

ADO.NET 中编写与提供程序无关的代码

描述用于在 ADO.NET 中编写不需要提供程序的代码的一般类。

ADO.NET 中执行常规任务

描述如何使用 ADO.NET 的各种通用功能。

查找其他 ADO.NET 信息

提供与 ADO.NET 有关的其他联机信息的链接。

(二)ADO.NET 的设计目标

随着应用程序开发的发展演变,新的应用程序越来越松散地耦合,通常基于 Web 应用程序模型。如今,越来越多的应用程序使用 XML 来编码要通过网络连接传递的数据。Web 应用程序将 HTTP 用作在层间进行通信的结构,必须显式处理请求之间的维护状态。这一新模型大大不同于连接、紧耦合的编程风格,此风格曾是客户端/服务器时代的标志。在此编程风格中,连接会在程序的整个生存期中保持打开,而不需要对状态进行特殊处理。

在设计符合当今开发人员需要的工具和技术时,Microsoft 认识到需要为数据访问提供全新的编程模型,此模型是基于 .NET Framework 生成的。基于 .NET Framework 这一点将确保数据访问技术的一致性,因为组件将共享通用的类型系统、设计模式和命名约定。

设计 ADO.NET 的目的是为了满足这一新编程模型的以下要求:具有断开式数据结构;能够与 XML 紧密集成;具有能够组合来自多个不同数据源的数据的通用数据表示形式;以及具有为与数据库交互而优化的功能,这些要求都是 .NET Framework 固有的内容。

在创建 ADO.NET 时,Microsoft 具有以下设计目标:

<!--[if !supportLists]-->·         <!--[endif]-->利用当前的 ActiveX 数据类型 (ADO) 知识。

<!--[if !supportLists]-->·         <!--[endif]-->支持 N 层编程模型。

<!--[if !supportLists]-->·         <!--[endif]-->集成 XML 支持。

利用当前的 ADO 知识

ADO.NET 的设计满足了当今应用程序开发模型的多种要求。同时,该编程模型尽可能地与 ADO 保持一致,这使现在的 ADO 开发人员不必从头开始学习。ADO.NET .NET Framework 的固有部分,ADO 程序员仍很熟悉。

ADO.NET 还与 ADO 共存。虽然大多数基于 .NET 的新应用程序将使用 ADO.NET 来编写,但 .NET 程序员仍然可以通过 .NET COM 互操作性服务来使用 ADO

有关 ADO ADO.NET 之间的差异的讨论,请参见 ADO.NET for the ADO Programmer

支持 N 层编程模型

使用断开式数据集这一概念已成为编程模型中的焦点。ADO.NET 为断开式 N 层编程环境提供了一流的支持,许多新的应用程序都是为该环境编写的。N 层编程的 ADO.NET 解决方案就是 DataSet

有关 DataSets 的更多信息,请参见 ADO.NET 中使用 DataSet

集成 XML 支持

XML 和数据访问紧密联系在一起。XML 与编码数据有关,数据访问也越来越多地与 XML 有关。.NET Framework 不仅支持 Web 标准,还是完全基于 Web 标准生成的。

XML 支持内置在 ADO.NET 中非常基本的级别上。.NET Framework ADO.NET 中的 XML 类是同一结构的一部分,它们在许多不同的级别集成。因此,您不必在数据访问服务集和它们的 XML 相应服务之间进行选择;它们的设计本来就具有从其中一个跨越到另一个的功能。

有关对 ADO.NET 使用 XML 的更多信息,请参见 DataSet 中使用 XML



更多资源:http://msdn.microsoft.com/zh-cn/library/h43ks021(VS.80).aspx 

(三)ADO.NET 结构

以前,数据处理主要依赖于基于连接的双层模型。当数据处理越来越多地使用多层结构时,程序员正在向断开方式转换,以便为他们的应用程序提供更佳的可缩放性。

(1)ADO.NET 组件

可以使用 ADO.NET 的两个组件来访问和处理数据:

<!--[if !supportLists]-->·         <!--[endif]-->.NET Framework 数据提供程序

<!--[if !supportLists]-->·         <!--[endif]-->DataSet

.NET Framework 数据提供程序

.NET Framework 数据提供程序是专门为数据处理以及快速地只进、只读访问数据而设计的组件。Connection 对象提供与数据源的连接。Command 对象使您能够访问用于返回数据、修改数据、运行存储过程以及发送或检索参数信息的数据库命令。DataReader 从数据源中提供高性能的数据流。最后,DataAdapter 提供连接 DataSet 对象和数据源的桥梁。DataAdapter 使用 Command 对象在数据源中执行 SQL 命令,以便将数据加载到 DataSet 中,并使对 DataSet 中数据的更改与数据源保持一致。

DataSet

ADO.NET DataSet 专门为独立于任何数据源的数据访问而设计。因此,它可以用于多种不同的数据源,用于 XML 数据,或用于管理应用程序本地的数据。DataSet 包含一个或多个 DataTable 对象的集合,这些对象由数据行和数据列以及有关 DataTable 对象中数据的主键、外键、约束和关系信息组成。

选择 DataReader 或 DataSet

在决定应用程序应使用 DataReader(请参见使用 DataReader 检索数据)还是应使用 DataSet(请参见 ADO.NET 中使用 DataSet)时,应考虑应用程序所需的功能类型。DataSet 用于执行以下功能:

<!--[if !supportLists]-->·         <!--[endif]-->在应用程序中将数据缓存在本地,以便可以对数据进行处理。如果只需要读取查询结果,DataReader 是更好的选择。

<!--[if !supportLists]-->·         <!--[endif]-->在层间或从 XML Web 服务对数据进行远程处理。

<!--[if !supportLists]-->·         <!--[endif]-->与数据进行动态交互,例如绑定到 Windows 窗体控件或组合并关联来自多个源的数据。

<!--[if !supportLists]-->·         <!--[endif]-->对数据执行大量的处理,而不需要与数据源保持打开的连接,从而将该连接释放给其他客户端使用。

如果不需要 DataSet 所提供的功能,则可以使用 DataReader 以只进、只读方式返回数据,从而提高应用程序的性能。虽然 DataAdapter 使用 DataReader 来填充 DataSet 的内容(请参见 DataAdapter 填充 DataSet),但可以使用 DataReader 来提高性能,因为这样可以节省 DataSet 所使用的内存,并将省去创建 DataSet 并填充其内容所需的处理。

(2)XML 和 ADO.NET

ADO.NET 利用 XML 的力量来提供对数据的断开式访问。ADO.NET 的设计与 .NET Framework XML 类的设计是并进的,它们都是同一个结构的组件。

ADO.NET .NET Framework 中的 XML 类集中于 DataSet 对象。无论 XML 源是文件还是 XML 流,都可以用来填充 DataSet。无论 DataSet 中数据的数据源是什么,DataSet 都可以作为符合万维网联合会 (W3C) 标准的 XML 进行编写,并且将其架构包含为 XML 架构定义语言 (XSD) 架构。由于 DataSet 固有的序列化格式为 XML,因此是在层间移动数据出色的媒介,这使 DataSet 成为在远程向 XML Web 服务发送数据和架构上下文以及从 XML Web 服务接收数据和架构上下文的最佳选择。

ADO.NET 类在 System.Data.dll 中,并且与 System.Xml.dll 中的 XML 类集成。当编译使用 System.Data 命名空间的代码时,请引用 System.Data.dll System.Xml.dll。有关 ADO.NET 应用程序的示例,请参见 ADO.NET 示例应用程序

在层和客户端之间对数据进行远程处理或封送

DataSet 的设计使您能够使用 XML Web 服务方便地通过 Web 将数据传输到客户端,并允许您使用 .NET 远程处理服务在 .NET 组件之间封送数据。您还可以通过这种方式对强类型化的 DataSet 进行远程处理。有关 XML Web 服务的概述,请参见 XML Web 服务概述。有关通过 XML Web 服务使用 DataSet 的示例,请参见通过 XML Web 服务使用 DataSet

有关远程处理服务的概述,请参见 .NET Framework 远程处理概述。请注意,在 ADO.NET 2.0 中,DataTable 对象也可以与远程处理服务和 XML Web 服务一起使用。

蓝文提示:.NET Framework 数据提供程序使用 System.Data.SqlClient 命名空间(用于 SQL Server .NET Framework 数据提供程序)、System.Data.Odbc 命名空间(用于 ODBC .NET Framework 数据提供程序)、System.Data.OleDb 命名空间(用于 OLE DB .NET Framework 数据提供程序)或 System.Data.OracleClient 命名空间(用于 Oracle .NET Framework 数据提供程序),可访问要与 DataSet 结合使用的数据源。每个 .NET Framework 数据提供程序(包含相应Connection\Command\DataReader以及个性化的类、方法、接口、属性)都有相应的 DataAdapter(包含相应Connection\Command\DataReader以及个性化的类、方法、接口、属性),可以将它用作数据源和 DataSet 之间的桥梁。

posted @ 2008-08-15 09:53  蓝色乌托邦  阅读(256)  评论(0编辑  收藏  举报