.Net之路(五)概述SQLHelper
前言
大家都知道在我们的三层或者使用到数据库的时候,通常都会使用到一个SQLHelper的类。起初在刚开始重构机
房收费系统的时候,就是在遇到相同的代码的时候就想起来去抽象成类。这里想跟大家分享一个这个我起码是现在遇
到的堪称完美的SQLHelper类了。
要点
1.构造函数的使用
构造函数的使用来定义公共的数据库连接对象。
         2.重载
重载的使用使得可以用的统一的方法来处理只是不同类型的数据。
          3.方法
               尽管这些只是简单的方法,但是这些方法的使用让你使这个类看起来是如此的干净、毫无赘余感。真正体现
了代码的复用啊!
代码
/*
 * 创建人:陈方林
 * 创建时间:2013-6-12 14:55
 * 说明:SQL Helper类
 * 版权所有:*******
 */
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
    {
        //通过构造函数来实例化所需的ADO对象
        private SqlConnection sqlconn = null;
        private SqlCommand sqlcmd = null;
        private SqlDataReader sdr = null;
        /// <summary>
        /// 将连接数据对象封装到构造函数中
        /// </summary>
        public SQLHelper ()
        {
          //连接数据库的字符串(配置文件的使用)
           String connStr = ConfigurationManager .ConnectionStrings["connStr"].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="strsql">传入增 删 改 SQL语句</param>
        /// <param name="paras">传入的参数数组</param>
        /// <param name="cmdtype">命令类型</param>
        /// <returns>返回受影响的行数</returns>
        public int ExecuteNonQuery(string strsql, SqlParameter[] paras, CommandType cmdtype)
        {
            //定义int类型的变量
            int res;
            //using语句执行SQL语句
            using (sqlcmd=new SqlCommand (strsql,GetConn ()))
           {
               sqlcmd.CommandType = cmdtype;
               sqlcmd.Parameters.AddRange (paras);
               res =sqlcmd.ExecuteNonQuery ();
           }
            return res;
        }       
        /// <summary>
        /// 该方法执行传入sql语句
        /// </summary>
        /// <param name="sql">传入的SQL语句</param>
        /// <param name="cmdtype">执行的命令类型</param>
        /// <returns>返回执行的记录行数</returns>
        public  int ExecuteNonQuery (string sql ,CommandType cmdtype )
        {
            //定义存储返回行数的变量
            int res ;
            //try catch语句实施查询并在查询结束后,关闭数据库连接
            try
            {
              
                //将SQL语句与连接对象传入执行查询对象
                sqlcmd = new SqlCommand(sql, GetConn ());
                //执行查询的数据库操作类别
                sqlcmd.CommandType = cmdtype;
                //执行查询
                sqlcmd.ExecuteNonQuery();
                //返回查询结果
                res = sqlcmd.ExecuteNonQuery();
                return res;
            }
            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;
        }        
        
    }     
}
                    
                
                
            
        
浙公网安备 33010602011771号