比较完美的SqlHelper类

来源:互联网 发布:千里眼软件 编辑:程序博客网 时间:2024/05/18 01:16

                             比较完美的SqlHelper类

      机房收费系统的时候我们用到了sqlhelper,可是随着用的越来多,渐渐的发现或许我们设计的不是很好,下面的就是一个设计的比较完美的sqlhelper  

using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Data;using System.Data.SqlClient;using System.Configuration;namespace DAL{    public class SQLHelper    {        private SqlConnection sqlconn = null;        private SqlCommand sqlcmd = null;        private SqlDataReader sdr = null;        /// <summary>          /// 通过构造函数获取数据库连接对象         /// </summary>          public SQLHelper()        {            //连通过配置文件来获取数据库连接字符串              String connStr = System.Configuration.ConfigurationManager.ConnectionStrings["strConnection"].ToString();            //连接数据库对象              sqlconn = new SqlConnection(connStr);        }        /// <summary>          /// 得到连接数据库对象,并且将数据库连接开启         /// </summary>          /// <returns>返回一个连接数据对象</returns>          private SqlConnection GetConn()        {            //判断现行数据库连接状态来判断是否执行数据连接              if (sqlconn.State == ConnectionState.Closed)            {                sqlconn.Open();            }            return sqlconn;        }        /// <summary>          /// 执行传入增 删 改的SQL语句与参数组(这里执行的是带参数的操作)          /// </summary>          /// <param name="strCmdText">传入增 删 改 SQL语句</param>          /// <param name="paras">传入的参数数组</param>          /// <param name="cmdtype">命令类型</param>          /// <returns>返回受影响的行数</returns>          public int ExecuteNonQuery(string strCmdText, SqlParameter[] paras, CommandType cmdtype)        {                         int intResult;            //using语句执行SQL语句 ,这语句的目的是为了当用完了数据库连接以后关闭数据库链接节省资源             using (sqlcmd = new SqlCommand(strCmdText, GetConn()))            {                sqlcmd.CommandType = cmdtype;                sqlcmd.Parameters.AddRange(paras);                intResult = sqlcmd.ExecuteNonQuery();            }            return intResult;        }        /// <summary>          /// 执行传入增 删 改的SQL语句(这里执行的是不带参数的操作)          /// </summary>          /// <param name="strCmdText">传入的增删改的SQL语句</param>          /// <param name="cmdtype">执行的命令类型</param>          /// <returns>返回执行的记录行数</returns>          public int ExecuteNonQuery(string strCmdText, CommandType cmdtype)        {            //定义存储返回行数的变量              int intResult;            //try catch语句实施查询并在查询结束后,关闭数据库连接              try            {                //将SQL语句与连接对象传入执行查询对象                  sqlcmd = new SqlCommand(strCmdText, GetConn());                //执行查询的数据库操作类别                  sqlcmd.CommandType = cmdtype;                //执行查询                  sqlcmd.ExecuteNonQuery();                //返回查询结果                  intResult = sqlcmd.ExecuteNonQuery();                return intResult;            }            catch (Exception ex)            {                throw ex;            }            finally            {                //判断现行数据连接状态来改变数据库状态                  if (sqlconn.State == ConnectionState.Open)                {                    sqlconn.Close();                }            }        }        /// <summary>          /// 该方法执行传入的SQL语句 (不带参数)         /// </summary>          /// <param name="cmdtext">传入的SQL语句或者需要执行的存储过程</param>          /// <param name="cmdtype">执行的命令类型</param>          /// <returns>返回DataTable类型的数据</returns>          public DataTable ExecuteQuery(string cmdtext, CommandType cmdtype)        {            //实例化datatable对象              DataTable dt = new DataTable();            //传入需要执行的SQL语句与连接数据库对象              sqlcmd = new SqlCommand(cmdtext, GetConn());            //定义执行的类型              sqlcmd.CommandType = cmdtype;            using (sdr = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection))            {                //将查询结果加载到dt对象中                  dt.Load(sdr);            }            //返回查询结果              return dt;        }        /// <summary>          /// 执行传入的SQL语句及参数组          /// </summary>          /// <param name="sql">传入的SQL语句或存储过程</param>          /// <param name="paras">参数数组</param>          /// <param name="cmdtype">执行的命令类型</param>          /// <returns></returns>          public DataTable ExecuteQuery(string sql, SqlParameter[] paras, CommandType cmdtype)        {            //实例化datatable对象              DataTable dt = new DataTable();            //实例化数据库执行对象              SqlCommand sqlcmd = new SqlCommand();            //需要执行数据库操作的类别              sqlcmd.CommandType = cmdtype;            //执行SQL语句              //sqlcmd = new SqlCommand(sql, GetConn ());              sqlcmd.Connection = GetConn();            sqlcmd.CommandText = sql;            //传入parameter参数组              sqlcmd.Parameters.AddRange(paras);            //使用using来实现数据库的关闭与打开              using (sdr = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection))            {                //将查询结果加载到dt对象中                  dt.Load(sdr);            }            //返回查询结果              return dt;        }    }}


原创粉丝点击