数据库层

    #region DBOperator
    /// <summary>
    /// 访问接口
    /// </summary>
    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 string strSql(string strSql);//执行Sql语句,没有返回值
        public abstract string strOleDbTran(ArrayList Array);
        public abstract DataSet GetDataSet(string QueryString);//执行Sql,返回DataSet

    }
    #endregion

    #region OleDB
    /// <summary>
    ///
    /// </summary>
    internal class OleDB : DBOperator
    {
        //数据库连接
        private OleDbConnection conn;

        //事务处理类 
        private OleDbTransaction trans;

        //指示当前是否正处于事务中
        private bool inTransaction = false;

        //SQL数据库的连接方法
        public OleDB(string strConnection)
        {
            this.conn = new OleDbConnection(strConnection);
        }

        //SQL数据库的连接方法
        public override IDbConnection Connection
        {
            get { return this.conn; }
        }

        //打开数据连接
        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;
        }

        //执行SQL 语句
        public override string strSql(string strSql)
        {
            try
            {
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = this.conn;
                cmd.CommandText = strSql;

                if (conn.State.ToString().ToUpper() != "OPEN")
                    this.conn.Open();

                cmd.ExecuteNonQuery();

                if (conn.State.ToString().ToUpper() == "OPEN")
                    this.conn.Close();

                return "Yes";
            }
            catch(Exception e)
            {
                return e.Message;
            }
        }

        //提交事物
        public override string strOleDbTran(ArrayList Array)
        {
            try
            {
                if (conn.State.ToString().ToUpper() != "OPEN")
                    this.conn.Open();

                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = this.conn;
                trans = this.conn.BeginTransaction();
                cmd.Transaction = trans;

                foreach (string s in Array)
                {
                    cmd.CommandText = s;
                    cmd.ExecuteNonQuery();
                }

                trans.Commit();

                if (conn.State.ToString().ToUpper() == "OPEN")
                    this.conn.Close();

                return "Yes";
            }
            catch (Exception e)
            {
                try
                {
                    trans.Rollback();
                }
                catch(Exception ex)
                {
                    /*
                    if (trans.Connection != null)
                    {
                        return "";
                    }
                     */

                    return "回滚失败:" + ex.Message;
                }
                finally
                {
                    this.conn.Close();
                }

                return e.Message;

            }
        }

        //读取数据集
        public override DataSet GetDataSet(string strSql)
        {
            if (conn.State.ToString().ToUpper() != "OPEN")
                this.conn.Open();

            OleDbCommand cmd = new OleDbCommand();
            cmd.Connection = this.conn;
            if (inTransaction)
                cmd.Transaction = trans;
            DataSet ds = new DataSet();
            OleDbDataAdapter ad = new OleDbDataAdapter();
            cmd.CommandText = strSql;
            ad.SelectCommand = cmd;
            ad.Fill(ds);

            if (conn.State.ToString().ToUpper() == "OPEN")
                this.conn.Close();

            return ds;
        }
    }
    #endregion

    #region DB
    /// <summary>
    ///
    /// </summary>
    public class DB
    {
        private static string strConnection=ConfigurationSettings.AppSettings["connstr"];

        public static DBOperator GetDB()
        {
            return new OleDB(strConnection);
            /*
            if (strConnection.IndexOf("provider=") < 0) //SqlServer
            {
                return new OleDB(strConnection);
                return new SqlDB(strConnection);
            }
            else     //other database
            {
                return new OleDB(strConnection);
            }
            */

        }
    }
    #endregion

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值