精简的后台程序代码——DBHelper

来源:互联网 发布:雅可比矩阵的意义 编辑:程序博客网 时间:2024/06/11 06:54
  public class DbHelper
    {
        #region 资源定义
        /// <summary>
        /// 数据库连接
        /// </summary>
        public DbProviderFactory _DbProviderFactory;    //数据库连接
        /// <summary>
        /// 读写连接字符串
        /// </summary>
        public string _ConnectionString;                //读写连接字符串
        /// <summary>
        /// 只读连接字符串
        /// </summary>
        public string _QueryConnectionString;           //只读连接字符串
        /// <summary>
        /// 数据库驱动类型
        /// </summary>
        public string _DriverType;                      //数据库驱动类型
        #endregion


        #region 初始化
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="connectionString"></param>
        /// <param name="queryConnectionString"></param>
        /// <param name="driverType"></param>
        public DbHelper(string connectionString, string queryConnectionString, string driverType)
        {
            _DbProviderFactory = SqlClientFactory.Instance;
            _ConnectionString = connectionString;
            _QueryConnectionString = queryConnectionString;
            _DriverType = driverType;
        }
        #endregion


        public SQLBuilder.Sql Sql(string sql)
        {
            return new SQLBuilder.Sql(this, sql);
        }


        public SQLBuilder.Insert Insert(string tableName)
        {
            return new SQLBuilder.Insert(this, tableName);
        }


        //public SQLBuilder.Insert Insert(string tableName,string PrimaryKey)
        //{
        //    return new SQLBuilder.Insert(this, tableName, PrimaryKey);
        //}


        public SQLBuilder.Insert_T<T> Insert<T>(T model)
        {
            return new SQLBuilder.Insert_T<T>(this, typeof(T).Name, model, string.Empty);
        }


        public SQLBuilder.Insert_T<T> Insert<T>(T model, string PrimaryKey)
        {
            return new SQLBuilder.Insert_T<T>(this, typeof(T).Name, model, PrimaryKey);
        }


        public SQLBuilder.Insert_T<T> Insert<T>(string tableName, T model, string PrimaryKey)
        {
            return new SQLBuilder.Insert_T<T>(this, tableName, model, PrimaryKey);
        }


        public SQLBuilder.Update Update(string tableName)
        {
            return new SQLBuilder.Update(this, tableName);
        }
        public SQLBuilder.Update_T<T> Update<T>(T model)
        {
            return new SQLBuilder.Update_T<T>(this, typeof(T).Name, model);
        }


        public SQLBuilder.Update_T<T> Update<T>(string tableName, T model)
        {
            return new SQLBuilder.Update_T<T>(this, tableName, model);
        }


        public SQLBuilder.Delete Delete(string tableName)
        {
            return new SQLBuilder.Delete(this, tableName);
        }


        public SQLBuilder.Select Select(string tableName, string colums)
        {
            return new SQLBuilder.Select(this, tableName, colums);
        }


        public SQLBuilder.Select_T<T> Select<T>(string tableName, string colums)
        {
            return new SQLBuilder.Select_T<T>(this, tableName, colums);
        }
        public SQLBuilder.Select_T<T> Select<T>( string colums)
        {
            return new SQLBuilder.Select_T<T>(this, typeof(T).Name, colums);
        }
        #region 方法
        /// <summary>
        /// 执行增删改sql语句
        /// </summary>
        /// <param name="sql">SQL语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public int Execute(string sql, object param)
        {
            if (string.IsNullOrEmpty(sql))
                return -101;


            using (var db = _DbProviderFactory.CreateConnection())
            {
                db.ConnectionString = _ConnectionString;
                db.Open();
                int _int = db.Execute(sql, param);


                db.Close();
                return _int;
            }
        }


        /// <summary>
        /// 执行查询SQL语句,返回第一行(只读库)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql">SQL语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public T QueryFirst<T>(string sql, object param)
        {
            try
            {
                using (var db = _DbProviderFactory.CreateConnection())
                {
                    db.ConnectionString = _QueryConnectionString;
                    db.Open();
                    T result = db.Query<T>(sql, param).FirstOrDefault();


                    db.Close();
                    return result;
                }
            }
            catch (Exception ex)
            {
                LogHelper.SetExceptionLog(ex);
                return default(T);
            }
        }


        /// <summary>
        /// 执行查询SQL语句,返回第一行(读写库)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql">SQL语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public T QueryFirstForWrite<T>(string sql, object param)
        {
            try
            {
                using (var db = _DbProviderFactory.CreateConnection())
                {
                    db.ConnectionString = _ConnectionString;
                    db.Open();
                    T result = db.Query<T>(sql, param).FirstOrDefault();


                    db.Close();
                    return result;
                }
            }
            catch (Exception ex)
            {
                LogHelper.SetExceptionLog(ex);
                return default(T);
            }
        }




        /// <summary>
        /// 执行查询SQL语句,返回数据实体(只读库)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql">SQL语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public IEnumerable<T> Query<T>(string sql, object param)
        {
            try
            {
                using (var db = _DbProviderFactory.CreateConnection())
                {
                    db.ConnectionString = _QueryConnectionString;
                    db.Open();
                    IEnumerable<T> result = db.Query<T>(sql, param);


                    db.Close();
                    return result;
                }
            }
            catch (Exception ex)
            {
                LogHelper.SetExceptionLog(ex);
                return null;
            }
        }


        /// <summary>
        /// 执行查询SQL语句,返回数据实体(读写库)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql">SQL语句</param>
        /// <param name="param">参数</param>
        /// <returns></returns>
        public IEnumerable<T> QueryForWrite<T>(string sql, object param)
        {
            try
            {
                using (var db = _DbProviderFactory.CreateConnection())
                {
                    db.ConnectionString = _ConnectionString;
                    db.Open();
                    IEnumerable<T> result = db.Query<T>(sql, param);


                    db.Close();
                    return result;
                }
            }
            catch (Exception ex)
            {
                LogHelper.SetExceptionLog(ex);
                return null;
            }
        }


        #endregion
    }
0 0
原创粉丝点击