当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

7.2ADO.NET概述

8/31/2020 9:52:39 PM 人评论

7.2ADO.NET概述

7.2 ADO.NET概述

ADO.NET即ActiveX Data Objects.NET,是.NET Framework的重要组成部分。ASP.NET通过ADO.NET来访问数据库。

7.2.1 ADO.NET数据提供程序

在ASP的时代,ADO技术是当时的主要数据访问任务的承担者,ADO可以很好地满足许多开发人员的需要,但它缺少一些关键特性,而这些特性正是开发人员为了编写功能更强大的应用程序所需要的。例如,越来越多的开发人员希望处理XML数据。尽管ADO的后期版本中添加了XML特性,但ADO并不是用来处理XML数据的。到了ASP.NET出现的时候,推出ADO.NET技术来取代ADO技术来进行数据的访问工作。ADO.NET是ADO的改进和完善版本,它的显著变化就是改变了ADO这种统一处理不同的数据源的方式。针对不同的数据源,ADO.NET使用了不同的数据提供程序模型来进行相关处理,可以使用图7-2来描述这种处理方式。

alt

图7-2 ADO.NET数据提供程序

其中,无论什么数据提供程序,它都是用于连接到数据库、执行命令和检索结果的一组特定的ADO.NET类,如表7-1所示。

表7-1 数据提供程序

alt

可以将这些数据提供程序看做应用程序和数据源之间的一座桥梁,而我们只需要简单地使用这些数据提供程序就可以操作各种数据源。并且,这些数据提供程序是轻量级的,它在数据源和代码之间创建最小的分层,并在不降低功能性的情况下提高性能。

其实,ADO.NET的这种数据提供程序模型的一个重要的基本思想就是扩展性。在某些特殊的环境下,开发人员可以为私有的数据源创建自己的数据提供程序。其方法也很简单,只需要继承相应的基类,实现相应的接口集即可。

7.2.2 ADO.NET数据提供程序的核心对象

简单地讲,ADO.NET提供了一个松散的模型,因为它并没有对多种数据源提供一个通用的对象。其结果是,如果需要从一个数据库改变到另一个数据库,则需要使用不同的类,并修改底层数据访问代码。即使是不同的.NET数据提供程序使用了不同的类,但是所有的提供程序都是按照相同的方式进行了标准化处理。而且,每个数据提供程序都是基于相同的接口集和基类。例如,在SQL Server数据提供程序的SqlConnection类中,SqlConnection类是从DbConnection类继承而来,而DbConnection类又实现了IDbConnection接口。同样,Oracle数据提供程序OracleConnection类也是从DbConnection类继承而来,因此,每个Connection类都实现了IDbConnection接口,所不同的是,它们各自定义了自己的核心实现方法,如Open()和Close()等。

这种标准化处理保证了每个Connection类能够以相同的方式工作,且提供相同的核心属性和方法集。在此基础上,每种数据提供程序又进行了一些优化处理,每种数据提供程序使用了完全不同的底层调用和API。例如,SQL Server数据提供程序使用了TDS(表格式数据流)协议同服务器进行通信。这种模型的优点并不是非常直观,主要有如下两点:

(1)每种数据提供程序都使用了相同的接口和基类,因此,同样可以编写一些通用的访问代码。

(2)由于每种数据提供程序分别相互独立实现,所以可以有针对性地做相应的优化。例如,对于SQL Server数据库提供程序,它支持执行XML查询的机制。

如上所述,虽然ADO.NET技术并没有包含一个通用的数据源提供程序对象。但每种数据提供程序都对Connection、Command,DataReader和DataAdapter核心对象提供了特定的实现,并进行了相应的优化,如表7-2所示。例如,如果需要创建连同SQL Servet数据库的连接,则可以使用SqlConneetion连接类。

表7-2 数据提供程序的核心对象

alt

7.2.3 ADO.NET基本类库

目前,ADO.NET支持两种类型的对象:基于连接的对象和基于内容的对象,如图7-3所示。

alt

图7-3 ADO.NET整体结构

1.基于连接的对象

它们是数据提供对象,如Connection、Command、commanu、DataReader和DataAdapter。它们连接到数据库,执行特定的SQL语句和存储过程,遍历结果集或者填充数据集(DataSet)。这类对象主要是针对具体数据源类型的,可以在数据提供程序指定的命名空间中找到,如Oracle数据提供程序的System.Data.OraclcClicnt命名空间。

2.基于内容的对象

这类对象与基于连接的对象不一样,它们属于非连接的、断开的,主要包括DataSet、DataColumn、DataRow、DataRelation等。它们完全和数据源独立,可以在System.Data名空间中找到它们。

其实,在.NET Framework框架中,所有的ADO.NET类库都位于System.Data命名空间下。这些类库包括连接到数据源、执行SQL命令以及存储过程、操作和获取数据等功能。常用的ADO.NET命名空间如表7-3所示。

表7-3 ADO.NET常用命名空间

alt

上一篇:7.1创建数据库

下一篇:7.3ADO.NET的对象

相关教程

共有条评论 网友评论

验证码: 看不清楚?