本章介绍框架中封装的数据库操作的一些功能,在实现的过程中费了不少心思,针对不同数据库的操作(SQLServer、Oracle、DB2)这方面还是比较简单的,用工厂模式就能很好解决,反而是在多数据库同时操作方面走了不少弯路;现在从以下几个方面进行说明:

本文要点:

1.不同数据库操作

2.多数据库同时操作

3.数据库事务处理

4.数据分页处理

5.关于oleDb对象创建与销毁的生命周期

此处用到了工厂模式来实现不同数据库操作,看下图

 十三、EnterpriseFrameWork框架核心类库之数据库操作(多数据库事务处理)

AbstractDatabase是一个抽象类,定义了所有对数据库的操作抽象方法,包括执行一个SQL语句、执行存储过程、事务操作等

 [Serializable]
    public abstract class AbstractDatabase 
    {

        #region 属性

        /// <summary>
        /// 数据库事务
        /// </summary>
        protected DbTransaction transaction = null;            //数据库事务

        protected string _connString;
        /// <summary>
        /// 返回数据库连接字符串
        /// </summary>
        public string ConnectionString
        {
            get { return _connString; }
        }

        protected bool isInTransaction = false;                //是否在事务中
        /// <summary>
        /// 返回是否处于事务中
        /// </summary>
        protected bool IsInTransaction
        {
            get { return this.isInTransaction; }
        }

        public int WorkId { get; set; }

        public string DbKey { get; set; }

        public DatabaseType DbType { get; set; }

        public AbstractDatabase newOleDb(string dbkey)
        {
            return this;
        }

        public AbstractDatabase defaultOleDb()
        {
            return this;
        }

        public abstract void TestDbConnection();

        #endregion
        
        /// <summary>
        /// 启动一个事务
        /// </summary>
        public abstract void BeginTransaction();
        /// <summary>
        /// 提交一个事务
        /// </summary>
        public abstract void CommitTransaction();
        /// <summary>
        /// 回滚一个事务
        /// </summary>
        public abstract void RollbackTransaction();

        public abstract DbCommand GetDbCommand();
        

        #region 执行插入一条记录 适用于有 自动生成标识的列
        public abstract int InsertRecord(IDbCommand cmd);
        public abstract int InsertRecord(string commandtext);
        #endregion

        #region 返回一个DataTable
        public abstract DataTable GetDataTable(IDbCommand cmd);
        public abstract DataTable GetDataTable(string commandtext);
        public abstract DataTable GetDataTable(string storeProcedureName, params object[] parameters);
        #endregion

        #region 返回一个DataReader
        public abstract IDataReader GetDataReader(IDbCommand cmd);
        public abstract IDataReader GetDataReader(string commandtext);
        #endregion

        #region 执行一个语句,返回执行情况
        public abstract int DoCommand(IDbCommand cmd);
        public abstract int DoCommand(string commandtext);
        public abstract int DoCommand(string storeProcedureName, params object[] parameters);
        #endregion

        #region 执行一个命令返回一个数据结果
        public abstract object GetDataResult(IDbCommand cmd);
        public abstract object GetDataResult(string commandtext);
        public abstract object GetDataResult(string storeProcedureName, params object[] parameters);
        #endregion

        public abstract DataSet GetDataSet(string storeProcedureName, params object[] parameters);

       
    }
View Code

相关文章:

  • 2021-09-09
  • 2022-12-23
  • 2021-09-19
  • 2021-12-18
  • 2022-03-01
  • 2022-12-23
  • 2021-07-27
  • 2021-06-12
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-16
  • 2022-12-23
  • 2021-06-24
相关资源
相似解决方案