您的位置:首页 > 数据库

SqlHelper就这么简单

2016-08-28 19:31 169 查看


一、SqlHelper作用:

SqlHelper用于简化你对数据库重复的操作包括:数据库的连接,数据库的增删改查。

也就是将原本复杂的事情简单化,说白了也就是一个类里面封装了一些方法,而这些方法大部分都是和数据库有关的。


二、SqlHelper的来源:

来源一:目前SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类当然我也没有真正看过她的里面到底有什么。

来源二:那就是我们自己用的,自己来写这个类。


三、简单介绍这个类里面有的方法:

方法1:对于SqlHelper的一个构造方法:

        目的:初始化数据库的连接字符串和Sqlconnection

方法2:获取连接的一个方法

方法3:执行SQL语句增删改或是存储过程

方法4:执行SQL查询语句

总的来说也就是这么多的东西,但是一还要考虑一些其他的东西,比如我上篇文章说的SQL注入的问题这就需要对方法3和方法4进行重构也就是带参数的方法3和方法4.

好了废话不多说了。


四、实践

[html] view
plain copy

 print?

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  

    {  

  

  

        /// 变量定义<summary>  

        /// </summary>  

        private SqlConnection conn = null;  

        private SqlCommand cmd = null;  

        private SqlDataReader sdr = null;  

  

  

  

        /// SQLhelper connStr 字符串的连接<summary>  

        /// </summary>  

        public SQLhelper()  

        {  

            string connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;  

            conn = new SqlConnection(connStr);  

  

        }  

  

  

  

        /// 获取conn<summary>  

        /// </summary>  

        /// <returns>为什么要这样写有什么意义呢?</returns>  

        private SqlConnection GetConn()  

        {  

            if (conn.State == ConnectionState.Closed)  

            {  

                conn.Open();  

            }  

  

            return conn;  

        }  

  

  

  

  

        /// 该方法传入一个增删改SQL语句或是存储过程<summary>  

        /// </summary>  

        /// <param name="sql">要执行的增删改SQL语句或是存储过程</param>  

        /// <returns>返回更新的记录数</returns>  

        public int ExecuteNonQuery(string cmdText,CommandType ct)  

        {  

            //不定义的时候返回的初值是零  

            int res;  

            try  

            {  

              

                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>  

        /// 执行带参数的增删改语句或是存储过程  

        /// </summary>  

        /// <param name="sql">带参数的SQL语句或是存储过程</param>  

        /// <param name="paras">参数集合</param>  

        /// <returns></returns>  

  

        public int ExecuteNonQuery(string cmdText, SqlParameter[] paras,CommandType ct)  

        {  

            int res;  

            using (cmd = new SqlCommand(cmdText, GetConn()))  

            {  

                cmd.CommandType = ct;  

                cmd.Parameters.AddRange(paras);  

                  

                res = cmd.ExecuteNonQuery();  

            }  

  

  

            return res;  

  

        }  

  

  

  

  

  

        /// 该方法传入一个查询SQL语句或是存储过程<summary>  

        /// 该方法传入一个查询SQL语句或是存储过程  

        /// </summary>  

        /// <param name="cmtText">SQL查询语句或存储过程</param>  

        /// <returns></returns>  

        public DataTable ExecuteQuery(string cmtText,CommandType ct)  

        {  

            DataTable dt = new DataTable();  

            cmd = new SqlCommand(cmtText, GetConn());  

            cmd.CommandType = ct;  

            //关系sdr的同是将会关闭conn  

            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))  

            {  

                dt.Load(sdr);  

            }  

            return dt;  

        }  

  

  

        /// 执行带参数的SQL语句或是存储过程<summary>  

        /// 执行带参数的SQL语句或是存储过程  

        /// </summary>  

        /// <param name="cmdText">SQL语句或是存储过程</param>  

        /// <param name="paras"></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);  

            //关系sdr的同是将会关闭conn  

            using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))  

            {  

                dt.Load(sdr);  

            }  

            return dt;  

        }  

  

     

    }  

        

         

}  

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SqlHelper 数据库