admin 管理员组

文章数量: 1184232


2024年3月28日发(作者:sql语句范例)

维普资讯

第21卷 第6期 

V01.21 

No.6 

重庆工学院学报(自然科学版) 

Journal of Chongqing Institute ofTechnology(Natural Science Edition) 

2007年6月 

Jun.2007 

【计算机与信息工程】 

基于设计模式 的“.Net” 数据库访问接口设计 

唐鑫 ,郭永强b 

(重庆工学院a.现代教育技术中心;b.教务处,重庆400050) 

!矫 牢 字 幂 尔 乔 带 带 秘 乖 彳 绵 

摘要:通过对ADO.Net数据访问机制的分析,结合Abstract Factory(抽象工厂)、Factory Method(工厂 

方法)2种设计模式,阐述了基于“.Net”的数据库访问接口的从r分析、设计到实现的开发过程.通 

过该接口的使用,实现了数据库访问代码的复用,将大大提高应用系统在不同类型数据库间的可 

移植性, 

关键词:设计模式;面向对象;ADO.Net;数据库访问 

文献标识码:A 

卸 

中图分类号:TP393 文章编号:1671—0924(20a7)o6—0093—05 

q 。 、琊 

Design of Database Access Interface Based on Design Patterns 

TANG Xin ,GUO Yong-qiangb 

(a.Modem Education Technology Center;b.Teaching Affairs Ofifce, 

Chongqig nInstitute ofTcclmology,Chongqing400050,China) 

Abstract:Through the analysis of the mechanism of access database by ADO.Net nd ahe tcombination wih t

Abstract Factory,Factory Method,two kinds of Design Patterns,this paper expatiates on the development 

process of analysis.design and realization ofthe Database Access Interface based on.Net.With this inter— 

face.the refactoring ofthe code ofdatabase access is realized,which will gready raise the portability ofthe 

application system in diferent kinds of databases. 

Key words:design patterns;object oriented;ADO.Net;database access 

I ADO.Net数据访问机制 

在进行程序开发时,我们经常会对各种数据库进行访问,特别像MIS,ERP这种对数据进行采集与处 

理的系统,几乎都会将数据存放于数据库中,因而在这样的系统中对数据库的操作是无法避免的[‘一 .当 

使用“.Net Framework”进行开发时,都是通过在“.Net”环境中提供的ADO.Net来对关系数据、XML和应用 

程序数据进行访问[ -4],图l为ADO.Net结构图. 

收稿日期:2007—02—10 

基金项目:重庆市教委科学技术研究项目(030601). 

作者简介:唐鑫(1980一),男,重庆人,主要从事数据库管理和软件工程研究. 

维普资讯

维普资讯

唐鑫,等:基于设计模式的“.Net”数据库访问接口设计 

System Data.Idb Connection 

System Data.Sql Client Sql Connection 

System Data.Orade Client Oracle Connection System Data.Odbc.Ocbo Connection 

图3 Connection对象结构 

System Data.Idb Command 

System.Data.Sql Client Sql Command System.Data.Oracle Client Orade Command 

System Data.OleDb.OleDb Command System.Data.Odbc.Ocbo Command 

图4 Command对象结构 

System.Data.Idata Reader 

System.Data.Sql Client Sql Data Reader System.Data.Oracle Client Orade Command 

System.Data.OleDb.OleDb Data Reader System.Data.Odbc.Ocbo Data Reader 

System.Data.IDataAdapter 

System.Data.Sql Client Sql DataAdapter System.Data.Oracle Client Orade DataA dapter 

System.Data.OleDb.OleDb DataAdapter System.Data.Odbc.Odbc Data Adapter 

95 

维普资讯

重庆工学院学报 

5)简化后的结构.不难看出,可以使用Abstract Factory(抽象工厂)模式来实现数据库访问接口对不同 

类型数据库的访问.在这里数据库访问接口既是Abstract Factory(抽象工厂),又是Client(对象的使用者), 

因此可以简化一下设计,得到如图7的结构. 

re

ate

ata

。“

dapte

r e

a t e

DB C

om m a n

d 

l 

()

CreateDataReader(

1l ::L.….... .,

_J

[!s rt

蛊盘 

l :D — ¨—t C—

l i 0n—

 

 一lt ininjI — I 1Ln=~=,I= n=一 ,’=I …=一==: I.・.÷ 

Orade Data Aceess 

Create DB Correction0 

rea

teD

ta

RA

edadpet

er

( 1)。fI-1:・ ’’,一 I .… O.一 

C er

a te 

DBC

o m ma  

d O

氮 

le Db Dam

‰ 

 Connection I l Odbd Data Connection 

Create DB Commando 

Create Data Reader0 

Create Data AdaoteO 

SqlDataCommand l I IOradeDataCommandI.. 

… …一 

fOleDbDataCoremand 

Ole Db Data Reader]l 里!!! !! :: 

..一一., 

e i!: j 

-…… ̄P"I Ole Db Data Adaptcr I Odbd Data A(1apterJ.qt‘… 

图7基于Abstract Factory的数据库访问接口结构 

6)应用.在基于Abstract Factory模式建立数据库访问接口后,我们可以在应用程序中使用IData Ac. 

cess对象对数据库进行操作,而不必关心所使用的数据库类型.只需在IData Access对象初始化时,将所用 

数据库类型所对应的IData Access的子类对象进行初始化,然后使用IData Access所提供的方法对数据库 

进行操作就可以了. 

7)优点.通过这样的设计,使得应用程序在开发的时候不必为不同的数据库类型而进行不同的程序 

实现,代码实现的效率得到极大的提高.同时,当应用程序在不同的数据库类型之间进行移植的时候,也 

可以不必进行代码的修改,使得程序的可移植性增强,而且可对数据库操作进行封装,使得程序在编码时 

的误码率降低,便于开发与维护. 

2.2 Factory Method(工厂方法) 

1)意图.定义一个用于创建对象的接E1,让子类决定实例化哪一个类.Factory Method使一个类的实 

例化延迟到其子类. 

2)适用性.①当一个类不知道它所必须创建的对象的类的时候;②当一个类希望由它的子类来指 

定它所创建的对象的时候;③当类将创建对象的职责委托给多个帮助子类中的某一个,并且希望指定哪 

个帮助子类为代理者的时候. 

3)结构.见图8. 

4)应用.由于在程序编写的过程中我们是可以确定当前程序所需要访问的数据库的类型的,因此在 

使用Factory Methdo模式时可以参数化工厂方法,使用一个可以标示要创建对象类型的参数,使得该工厂 

方法可以创建多种产品.而所创建的对象将共享IData Access接口(见图9). 

维普资讯

唐鑫,等:基于设计模式的“.Net”数据库访问接口设计 97 

Concrete Crector 

Factory Method()l 

图8 Factory Method 

I…. 1 ’ 

l L,a a^cce55 l— 

 l

I 

L D ata Acces¥Creator 

Created D ata Access(in type Data Base Type) 

-一

--J Oracle Da£a Access SQLDDa a Access ‘一一一一‘一一一一‘一一一一’l 

l 

((枚举)) 

Data Base Type 

+l=Orade 

…・ 

I Odbc Data Access 0IeDR Data ACCe ̄S ●一一一一一一一一一一一一一一。 

+2=SQL Server 

+3=ODBC 

+4=OleDB 

图9基于Factory Methd的数据库访问接口结构 o

5)优点.在基于Factory Method模式对数据库访问接口进行实现后,可以在接口中不必暴露IData Ac— 

ces的子类信息,[Data Access的对象创建被封装到Create Data Access方法中,用户所需操作的数据库类型 

通过DataBaseType类型的参数来确定,这样的封装使得IData Access对象的生成对用户透明,接口的实现 

对用户透明. 

通过这样的设计,使得我们在对不同的数据库类型进行程序实现时,可以通过参数来进行,编码人员 

不必了解接口的复杂操作,接口的使用简单、方便.同时,应用程序在不同的数据库类型之间进行移植时, 

只需修改数据库类型参数就可以实现.如果将数据库类型记录到应用程序配置参数中,则在数据库类型 

发生改变时只需对配置参数进行修改即可,程序的可移植性得到很好的实现. 

3结束语 

本文中讨论了在“.Net”平台下使用ADO.Net访问数据库时所面临的问题,并通过实例描述了如何应 

用设计模式思想解决这些问题.通过数据库访问接口的实现,使得数据库访问代码可被复用,降低了开发 

的复杂度,增强了系统的健壮性以及可维护性,并使应用系统在不同数据库间移植成为可能.可以看出, 

软件设计模式代表了从成功的系统设计中分离出来的可重用的优秀设计经验,为项目之间、开发人员之 

间重用面向对象代码提供了一种方便的途径,使得软件系统的设计、开发、维护、移植更加容易. 

参考文献: 

[1] 李敏,湛成伟.面向对象数据模型技术在旅游信息管理中的应用研究[J].重庆工学院学报.2006,20(5):ll5一ll8 

[2]赖莉.数据存储方案分析[J].渝西学院学报:自然科学版,2005.20(5):ll5一ll8. 

[3]成卫,苟光磊,闫河.重钢运输部信息系统数据安全方案设计[J].重庆工学院学报,2004(4):43—47. 

[4]胡芳华,张继棠.基于.NET的数据层设计[J].重庆工商大学学报:自然科学版,2oo5(3):281—284. 

(责任编辑刘舸) 


本文标签: 数据库 访问 进行 接口 类型