设为首页收藏本站language 语言切换
查看: 1393|回复: 0
收起左侧

创建基于.NET的通用数据库访问层

[复制链接]
发表于 2010-2-25 10:30:20 | 显示全部楼层 |阅读模式
<p ><B>一.引言:</b><p >ADO.NET为应用程序开发人员提供了一种全新的数据库访问机制,它使得数据库编程变得相当容易。然而,在运用ADO.NET进行数据库编程时,开发人员往往会因为不注意某些细节问题而使得应用程序的可扩展性很差,也即某个数据库应用程序只能应用于某个特定类型的数据库,而不能和更多的其他类型的数据库进行交互或是移植到其它数据库平台下。本文将深入研究如何运用ADO.NET中的接口技术来实现通用数据库编程技术并构建通用数据库访问层。<p ><B>二.ADO.NET体系结构:</b><p >ADO.NET是由一系列的数据库相关类和接口组成的,它的基石是XML技术,所以通过运用ADO.NET技术应用程序不仅能访问关系型数据库中的数据,而且还能访问层次化的XML数据。ADO.NET为应用程序提供了两种数据访问的模式:连接模式(Connected Mode)和非连接模式(Disconnected Mode)。运用过ADO技术的开发人员对前一种模式应该是非常熟悉的,而后一种模式则是ADO.NET才具有的。相比于传统的数据库访问模式,非连接的模式为应用程序提供了更大的可升级性和灵活性。在该模式下,一旦应用程序从数据源中获得所需的数据,它就断开与原数据源的连接,并将获得的数据以XML的形式存放在主存中。在应用程序处理完数据后,它再取得与原数据源的连接并完成数据的更新工作。<p >ADO.NET中的DataSet类是非连接模式的核心,数据集对象(DataSet)是以XML的形式存放数据。应用程序既可以从一个数据库中获取一个数据集对象,也可以从一个XML数据流中获取一个数据集对象。而从用户的角度来看,数据源在哪里并不重要,也是无需关心的。这样一个统一的编程模型就可被运用于任何使用了数据集对象的应用程序。<p >ADO.NET体系结构中还有一个非常重要的部分就是数据提供者对象(Data Provider),它是访问数据库的必备条件。通过它应用程序可以产生相应的数据集对象;同时它还提供了连接模式下的数据库访问支持。图1描述了ADO.NET总体的体系结构。<p ><center><img  src="http://www.hh010.com/upload_files/article/244/9_gcfdpl257381.jpg"><p >图1 ADO.NET的体系结构</center><p ><B>三.数据提供者对象:</b><p >本文研究的是通用数据库编程并如何运用该技术实现通用数据库访问层,因此要从ADO.NET体系结构中的数据提供者对象入手,使得一个应用程序具有访问多个不同类型数据库的能力。ADO.NET中的数据提供者对象包括数据库连接接口(IDbConnection)、数据库命令接口(IDbCommand)、数据读取器接口(IDataReader)和数据适配器接口(IDbDataAdapter)等不同种类的接口。通过这些接口,应用程序可以访问数据库、执行相关的命令操作并获取相应结果,获取的结果可以是以XML数据的形式存放在数据集对象中,也可以是直接被应用程序所使用。目前,微软的.NET Framework已经是1.1版本了,所以其中的ADO.NET支持了更广泛的数据提供者对象:一种为SQL Server数据提供者对象,它是专门应用于MS SQL Server数据库的,所以性能得到了优化;一种为OleDb数据提供者对象,它可以通过COM层和OLE DB进行交互;一种为ODBC数据提供者对象,它可以直接跟ODBC数据源进行交互;最后一种Oracle数据提供者对象,它是专门针对Oracle数据库的,所以性能上也得到了不少优化。与这四种数据提供者对象相关联的类的前缀分别为:Sql、OleDb、Odbc以及Oracle,而与其相关联的命名空间则分别为:System.Data.SqlClient、System.Data.OleDb、System.Data.Odbc以及System.Data.OracleClient。在实际的开发中,开发人员可以根据需要选择相应类型的数据提供者对象。不过为了使应用程序具有通用性,开发人员应通过使用数据提供者对象的接口而并非某个特定类型的数据提供者对象来实现数据库的访问操作,这样就可以实现通用数据库编程并构建通用数据库访问层了。<p >下面的表格列举了各种接口的名称以及相应的描述:<p ><center><img  src="http://www.hh010.com/upload_files/article/244/9_ynkwwp257382.jpg"><p >表1 各种接口名称以及其相应描述</center><p >下面的表格列举了四种不同类型的数据提供者对象中的各个相互并行的类:<p ><center><img  src="http://www.hh010.com/upload_files/article/244/9_fvkbcj257383.jpg"><p >表2 四种类型的数据提供者对象中的类</center><p align="center"><font color="FF0000" >1</font>23<span class="content01">下一页&gt;&gt;</span></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 12:15 , Processed in 0.062178 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表