再谈SQLhelper类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzh66888/article/details/86363021

SQLhelper在牛腩当中再次出现了,这时我才发觉可能之前运用的SQLhelper都来源于此吧。众所周知,SQLhelper方便了我们对数据库的连接使用,他把我们重复去写的那些数据库连接(SqlConnection)、SqlCommand、SqlDataReader等等给简化了,封装过后我们通常是只需要给方法传入一些参数如数据库连接字符串、SQL参数等,就可以访问数据库了。

解析SQLhelper

SQLhelper要做的事情就是连接数据库,我们要做的事情就是:

  1. 设置配置文件(以SQL sever为例)
<connectionStrings>
	<!--SqlServerHelper连接字符串设定-->
	<add connectionString="server=.;uid=sa;pwd=123456;database=yourdatabase" name="SqlServerHelper"/>
</connectionStrings>
  1. 访问配置文件,连接字符串
  2. 打开数据库
		public SQLHelper()
        {
            //访问配置文件,连接字符串
            string connStr =ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
            conn = new SqlConnection(connStr);
        }
        private SqlConnection GetConn()
        {
            //获得数据库状态,如果没有打开,则它给你打开数据库
            if (conn.State == ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
        }

下面来看具体的SQL语句:

增删改:

	    /// <summary>
        /// 执行带参数的增删改SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">执行带参数的增删改SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras,CommandType ct)
        {
            int res;
            using (cmd = new SqlCommand(cmdText, GetConn()))  //实例化新的SQLcommand
            {
                cmd.Parameters.AddRange(paras);  //添加参数
                cmd.CommandType= ct;   //命令类型为ct
                res = cmd.ExecuteNonQuery();                
            }
            return res;
        }
        /// <summary>
        /// 执行不带参数的增删改SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">执行不带参数的增删改SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public int ExecuteNonQuery(string cmdText,CommandType ct)
        {
            int res;
            try
            {
                SqlCommand cmd = new SqlCommand(cmdText, GetConn());
                cmd.CommandType = ct;
                res = cmd.ExecuteNonQuery();
                
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (conn.State == ConnectionState.Open)
                {
                    conn.Close();
                }
            }
            return res;
        }

查:

        /// <summary>
        /// 执行不带参数的查询SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">查询SQL语句或存储过程</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText,CommandType ct)
        {
            DataTable dt = new DataTable();
            cmd = new SqlCommand(cmdText,GetConn());
            //命令类型
            cmd.CommandType = ct;
            using (sdr=cmd.ExecuteReader(CommandBehavior.CloseConnection))   //读取
            {
                dt.Load(sdr);
            }
            return dt;
        }

        /// <summary>
        /// 执行带参数的查询SQL语句或存储过程
        /// </summary>
        /// <param name="cmdText">查询SQL语句或存储过程</param>
        /// <param name="paras">参数集合</param>
        /// <param name="ct">命令类型</param>
        /// <returns></returns>
        public DataTable ExecuteQuery(string cmdText, SqlParameter[] paras, CommandType ct)
        {
            DataTable dt = new DataTable();          
            cmd = new SqlCommand(cmdText, GetConn());
            cmd.CommandType = ct;
            //参数
            cmd.Parameters.AddRange(paras);
            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }                                               
            return dt;
        }

补充说明:

在 SqlHelper 类中实现的方法包括:
ExecuteNonQuery。此方法用于执行不返回任何行或值的命令。这些命令通常用于执行数据库更新,但也可用于返回存储过程的输出参数。
ExecuteReader。此方法用于返回SqlDataReader对象,该对象包含由某一命令返回的结果集。
ExecuteDataset。此方法返回DataSet对象,该对象包含由某一命令返回的结果集。
ExecuteScalar。此方法返回一个值。该值始终是该命令返回的第一行的第一列。
ExecuteReader:此专用 ExecuteReader 实现用于通过适当的 CommandBehavior 打开SqlDataReader对象,以便最有效地管理与阅读器关联的连接的有效期。

对于SQLhelper,小编现在也不敢说掌握的非常熟练,只是反复学习罢了。另外小编发现了SQLhelper的一个有趣的意思,SQLhelper翻译过来就是SQL的帮助者,仔细品味一下,这个名字起得妙哉。

猜你喜欢

转载自blog.csdn.net/wzh66888/article/details/86363021