使用设计模式构建通用数据库访问类_c#

使用设计模式构建通用数据库访问类_c#

ID:8144384

大小:24.60 KB

页数:12页

时间:2018-03-07

使用设计模式构建通用数据库访问类_c#_第1页
使用设计模式构建通用数据库访问类_c#_第2页
使用设计模式构建通用数据库访问类_c#_第3页
使用设计模式构建通用数据库访问类_c#_第4页
使用设计模式构建通用数据库访问类_c#_第5页
资源描述:

《使用设计模式构建通用数据库访问类_c#》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、使用设计模式构建通用数据库访问类_C#使用设计模式构建通用数据库访问类_C#  在应用程序的设计中,数据库的访问是非常重要的,我们通常需要将对数据库的访问集中起来,以保证良好的封装性和可维护性。在.Net中,数据库的访问,对于微软自家的SqlServer和其他数据库(支持OleDb),采用不同的访问方法,这些类分别分布于System.Data.SqlClient和System.Data.OleDb名称空间中。微软后来又推出了专门用于访问Oracle数据库的类库。我们希望在编写应用系统的时候,不因这么多类的不同而受到影响,能够尽量做到数据库无关

2、,当后台数据库发生变更的时候,不需要更改客户端的代码。  有的时候,为了性能和其他原因,我们也希望提供对数据库访问的缓存,特别是数据库连接的缓存。虽然微软给我们内置了数据库缓存,但是,自己控制缓存,无疑可以提供更大的灵活性和效率。  这就需要我们在实际开发过程中将这些数据库访问类再作一次封装。这里,介绍一种在实际应用中得到了非常好的效果的实作策略。Factory和Silgleton设计模式是使用的主要方法。  我们先来看看Factory的含义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延

3、迟到其子类。我们这里可能会处理对多种数据库的操作,因此,需要首先定义一个操纵数据库的接口,然后,根据数据库的不同,由类工厂决定实例化哪个类。  下面,我们首先来定义这个访问接口。为了方便说明问题,我们为这个类定义了比较少的方法,其他的方法是很容易参照添加的。同时注意,我这里使用了abstract class来定义这个访问接口,而不是interface,理由在后面可以看到。publicabstractclassDBOperator{publicabstractIDbConnectionConnection{get;}//得到数据库连接publi

4、cabstractvoidOpen();//打开数据库连接publicabstractvoidClose();//关闭数据库连接publicabstractvoidBeginTrans();//开始一个事务publicabstractvoidCommitTrans();//提交一个事务publicabstractvoidRollbackTrans();//回滚一个事务publicabstractvoidexeSql(stringstrSql,string[]strParams,object[]objValues);//执行Sql语句,没有返回

5、值publicabstractDataSetexeSqlForDataSet(stringQueryString);//执行Sql,返回DataSet}  然后,我们分别为SqlServer和OleDb数据库编写两个数据访问的具体实现类:  SqlServer的数据库访问类:internalclassSqlDBOperator:DBOperator{privateSqlConnectionconn;//数据库连接privateSqlTransactiontrans;//事务处理类privateboolinTransaction=false;/

6、/指示当前是否正处于事务中publicoverrideIDbConnectionConnection{  get{returnthis.conn;}}publicSqlDBOperator(stringstrConnection){  this.conn=newSqlConnection(strConnection);}publicoverridevoidOpen(){  if(conn.State.ToString().ToUpper()!="OPEN")    this.conn.Open();}publicoverridevoidClo

7、se(){  if(conn.State.ToString().ToUpper()=="OPEN")this.conn.Close();}publicoverridevoidBeginTrans(){  trans=conn.BeginTransaction();    inTransaction=true;}publicoverridevoidCommitTrans(){  trans.Commit();    inTransaction=false;}publicoverridevoidRollbackTrans(){  trans.Ro

8、llback();    inTransaction=false;}publicoverridevoidexeSql(stringstrSql,string[]st

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。