C#自用DBHelper类

C#自用DBHelper类

2016-09-08 查询DataTable和DateSet加入元数据信息, 类实现IDisposable接口
DBHelper类代码:

    public class DBHelper: IDisposable
    {
        #region 实现IDisposable接口
        public void Dispose()
       {         
            Dispose(true);
            GC.SuppressFinalize(this);
       }

        protected virtual void Dispose(bool disposing)
        {

            if (!m_disposed)
            {
                if (disposing)
                {
                    con.Dispose();
                    if (sqlTran != null)
                    {
                        sqlTran.Dispose();
                    }
                }
                m_disposed = true;
            }
        }

        ~DBHelper()
        {
            Dispose(false);
        }

        private bool m_disposed;
        #endregion

       /// <summary>
        /// 初始化DBHelper
        /// </summary>
        /// <param name="source">服务器</param>
        /// <param name="data">数据库</param>
        /// <param name="user">用户名</param>
        /// <param name="password">密码</param>
        public DBHelper(string source, string data, string user, string password)
        {
            string conStr = "Data Source=" + source +";";
            conStr += "Initial Catalog=" + data +";";
            conStr += "User ID=" + user +";";
            conStr += "Password=" + password +";";
            con = new SqlConnection(conStr);
            Open();
        }

        /// <summary>
        /// 关闭数据库连接
        /// </summary>
        public void Close()
        {
            con.Close();
            return;
        }
        /// <summary>
        /// 打开数据库连接
        /// </summary>
        public void Open()
        {
            con.Open();
            return;
        }

        SqlConnection con;

        SqlTransaction sqlTran;

        #region 事务
        /// <summary>
        /// 开启事务
        /// </summary>
        public void OpenTran()
        {
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            sqlTran = con.BeginTransaction();
            return;
        }
        /// <summary>
        /// 提交事务
        /// </summary>
        public void CmtTran()
        {
            sqlTran.Commit();
            return;
        }
        /// <summary>
        /// 回滚事务
        /// </summary>
        public void RockTran()
        {
            sqlTran.Rollback();
            return;
        }
        /// <summary>
        /// 关闭事务
        /// </summary>
        public void CloseTran()
        {
            sqlTran.Dispose();
            sqlTran = null;
            return;
        }

        #endregion

        #region 执行查询, 返回DataTable

        /// <summary>
        /// 执行查询,返回DataTable
        /// </summary>
        /// <param name="strSQL"></param>
        /// <returns></returns>
        public DataTable GetTable(string strSQL)
        {
            return GetTable(strSQL, null);
        }

        /// <summary>
        /// 执行查询,返回DataTable
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public DataTable GetTable(string strSQL, SqlParameter[] pas)
        {
            return GetTable(strSQL, pas, CommandType.Text);
        }

        /// <summary>
        /// 执行查询,返回DataTable
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pas"></param>
        /// <param name="cmdType"></param>
        /// <returns></returns>
        public DataTable GetTable(string strSQL, SqlParameter[] pas, CommandType cmdType)
        {
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
            da.SelectCommand.CommandType = cmdType;
            //判断是否开启事务
            if (sqlTran != null)
            {
                da.SelectCommand.Transaction = sqlTran;
            }
            if (pas != null)
            {
                da.SelectCommand.Parameters.AddRange(pas);
            }
            da.FillSchema(dt, SchemaType.Mapped);
            da.Fill(dt);        
            da.SelectCommand.Parameters.Clear();
            return dt;
        }
        #endregion

        #region 执行查询, 返回DataSet

        /// <summary>
        /// 执行查询, 返回DataSet
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pas"></param>
        /// <param name="cmdtype"></param>
        /// <returns></returns>
        public DataSet GetDataSet(string strSQL, SqlParameter[] pas, CommandType cmdtype)
        {
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(strSQL, con);
            //判断是否开启事务
            if (sqlTran != null)
            {
                da.SelectCommand.Transaction = sqlTran;
            }
            da.SelectCommand.CommandType = cmdtype;
            if (pas != null)
            {
                da.SelectCommand.Parameters.AddRange(pas);
            }
            da.FillSchema(ds, SchemaType.Mapped);
            da.Fill(ds);
            da.SelectCommand.Parameters.Clear();
            return ds;
        }

        /// <summary>
        /// 执行查询, 返回DataSet
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public DataSet GetDataSet(string strSQL, SqlParameter[] pas)
        {
            return GetDataSet(strSQL, pas, CommandType.Text);
        }

        /// <summary>
        /// 执行查询, 返回DataSet
        /// </summary>
        /// <param name="strSQL"></param>
        /// <returns></returns>
        public DataSet GetDataSet(string strSQL)
        {
            return GetDataSet(strSQL, null);
        }
        #endregion

        #region 执行非查询语句

        /// <summary>
        /// 执行非查询语句,返回受影响行数
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pas"></param>
        /// <param name="cmdType"></param>
        /// <returns></returns>
        public int ExcuteSQL(string strSQL, SqlParameter[] pas, CommandType cmdType)
        {
            int i = 0;
            if (con.State != ConnectionState.Open)
            {
                Open();
            }
            SqlCommand cmd = new SqlCommand(strSQL, con);
            //判断是否开启事务
            if (sqlTran != null)
            {
                cmd.Transaction = sqlTran;
            }
            cmd.CommandType = cmdType;
            if (pas != null)
            {
                cmd.Parameters.AddRange(pas);
            }
            i = cmd.ExecuteNonQuery();;
            return i;
        }

        /// <summary>
        /// 执行非查询语句,返回受影响行数
        /// </summary>
        /// <param name="strSQL"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public int ExcuteSQL(string strSQL, SqlParameter[] pas)
        {
            return ExcuteSQL(strSQL, pas, CommandType.Text);
        }

        /// <summary>
        /// 执行非查询语句,返回受影响行数
        /// </summary>
        /// <param name="strSQL"></param>
        /// <returns></returns>
        public int ExcuteSQL(string strSQL)
        {
            return ExcuteSQL(strSQL, null);
        }

        #endregion

        #region 执行存储过程

        /// <summary>
        /// 执行非查询存储过程,返回受影响行数
        /// </summary>
        /// <param name="procName"></param>
        /// <param name="pas"></param>
        /// <returns></returns>
        public int ExcuteProc(string procName, SqlParameter[] pas)
        {
            return ExcuteSQL(procName, pas, CommandType.StoredProcedure);
        }

        /// <summary>
        /// 执行非查询存储过程,返回受影响行数
        /// </summary>
        /// <param name="procName"></param>
        /// <returns>返回受影响行数</returns>
        public int ExcuteProc(string procName)
        {
            return ExcuteProc(procName, null);
        }

        #endregion

    }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值