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 IDbConnection Connection { get{return this.conn;} } public SqlDBOperator(string strConnection) { this.conn= new SqlConnection(strConnection); } public override void Open() { if(conn.State.ToString().ToUpper()!="OPEN") this.conn.Open(); } public override void Close() { if (conn.State.ToString().ToUpper()=="OPEN") this.conn.Close(); } public override void BeginTrans() { trans=conn.BeginTransaction() ; inTransaction=true; } public override void CommitTrans() { trans.Commit(); inTransaction=false; } public override void RollbackTrans() { trans.Rollback(); inTransaction=false; } public override void exeSql(string strSql,string[] strParams,object[] strValues) { SqlCommand cmd=new SqlCommand(); cmd.Connection=this.conn ; if(inTransaction) cmd.Transaction=trans;