有的时候,为了性能和其他原因,我们也希望提供对数据库访问的缓存,特别是数据库连接的缓存。虽然微软给我们内置了数据库缓存,但是,自己控制缓存,无疑可以提供更大的灵活性和效率。
这就需要我们在实际开发过程中将这些数据库访问类再作一次封装。这里,介绍一种在实际应用中得到了非常好的效果的实作策略。Factory和Silgleton设计模式是使用的主要方法。
我们先来看看Factory的含义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。我们这里可能会处理对多种数据库的操作,因此,需要首先定义一个操纵数据库的接口,然后,根据数据库的不同,由类工厂决定实例化哪个类。
下面,我们首先来定义这个访问接口。为了方便说明问题,我们为这个类定义了比较少的方法,其他的方法是很容易参照添加的。同时注意,我这里使用了abstract class来定义这个访问接口,而不是interface,理由在后面可以看到。
public abstract class DBOperator { public abstract IDbConnection Connection{get;} //得到数据库连接 public abstract void Open(); //打开数据库连接 public abstract void Close(); //关闭数据库连接 public abstract void BeginTrans(); //开始一个事务 public abstract void CommitTrans(); //提交一个事务 public abstract void RollbackTrans(); //回滚一个事务 public abstract void exeSql(string strSql,string[] strParams,object[] objValues); //执行Sql语句,没有返回值 public abstract DataSet exeSqlForDataSet(string QueryString);//执行Sql,返回DataSet }
然后,我们分别为Sql Server和OleDb数据库编写两个数据访问的具体实现类:
Sql Server的数据库访问类:
internal class SqlDBOperator: DBOperator { private SqlConnection conn; //数据库连接 private SqlTransaction trans; //事务处理类 private bool inTransaction=false; //指示当前是否正处于事务中 public override ID
666



被折叠的 条评论
为什么被折叠?



