zoukankan      html  css  js  c++  java
  • SQLHelper 数据库访问助手类

    SQLHelper类执行对数据库的访问,并返回值:连接DB的方法以及SqlCommand的各种方法的重写(传入参数,参数类型,返回的值)等。

    App_Code文件夹存放网站中通用的类,App_Data文件夹存放一些数据文件XML文件等,WebConfig文件中存放全局的参数。

    缓存可以提高对DB的访问效率,.CS文件更改后需要编译重新生成。

    try,catch中可以把错误日志写到Log中。

    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.SqlClient;//访问数据库



    /// <summary>
    /// 
    /// </summary>
    public class SQLHelper
    {
        SqlConnection sqlCon;
        SqlCommand sqlCom;
        SqlDataReader sdr;
        public SQLHelper()
        {
         
        }
        //获取一个打开的连接
        private SqlConnection getCon()//调用时会得到一个已经 打开的sqlConnection
        {
            string strCon = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;//获得web.config中的连接字符串
            if (sqlCon==null)//还没有建立连接
            {
                sqlCon = new SqlConnection(strCon);
                sqlCon.Open();
            }
            if (sqlCon.State==ConnectionState.Closed)
            {
                sqlCon.Open();//如果处于关闭状态,不需要建立连接,只需要将其打开

            }
            return sqlCon;
        }

        //执行无参数的ExecuteNonQuery

        public int ExecuteNonQuery(string sql,CommandType ct)
        {
            int res = 0;
            try
            {
                sqlCom = new SqlCommand(sql, getCon());
                sqlCom.CommandType = ct;//sql语句类型
                res = sqlCom.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;//异常处理机制,可以把出错信息写入log中
            }
            finally
            {
                //关闭连接
                if (sqlCon.State==ConnectionState.Open)
                {
                    sqlCon.Close();
                }
            }
            return res;
     
        }

        //执行的参数的NonQuery

        public int ExecuteNonQuery(string sql,SqlParameter[] sqlPara, CommandType ct)
        {
            int res = 0;
            try
            {
                sqlCom = new SqlCommand(sql, getCon());
                sqlCom.CommandType = ct;//sql语句类型
                sqlCom.Parameters.AddRange(sqlPara);//添加参数数组
                res = sqlCom.ExecuteNonQuery();
                sqlCom.Parameters.Clear();//清理参数,清空
            }
            catch (Exception ex)
            {
                throw ex;//异常处理机制,可以把出错信息写入log中
            }
            finally
            {
                //关闭连接
                if (sqlCon.State == ConnectionState.Open)
                {
                    sqlCon.Close();
                }
            }
            return res;

        }

        //执行没有参数的ExcuteScalar

        public object ExecuteScalar(string sql, CommandType ct)
        {
            object res = null;
            try
            {
                sqlCom = new SqlCommand(sql, getCon());
                sqlCom.CommandType = ct;
                res = sqlCom.ExecuteScalar();

            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sqlCon.State == ConnectionState.Open)
                {
                    sqlCon.Close();
                }

            }
            return res;
        }

        // ExcuteScalar方法,返回object类型

        public object ExecuteScalar(string sql, SqlParameter[] sqlPara, CommandType ct)
        {
            object res=null;
            try
            {
                sqlCom = new SqlCommand(sql,getCon());
                sqlCom.CommandType = ct;
                sqlCom.Parameters.AddRange(sqlPara);
                res = sqlCom.ExecuteScalar();
                sqlCom.Parameters.Clear();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (sqlCon.State == ConnectionState.Open)
                {
                    sqlCon.Close();
                }
            }
            return res;
        }

     

        //执行无参数的ExecuteReader

        public SqlDataReader ExecuteReader(string sql,CommandType ct)
        {
            SqlDataReader sdr = null;
            try
            {
                sqlCom = new SqlCommand(sql,getCon());
                sqlCom.CommandType = ct;  
                using (sdr = sqlCom.ExecuteReader(CommandBehavior.CloseConnection))//sqlDataReader注销释放空间时,同时关闭数据库的连接
                {
                    
                }
            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sqlCon.State == ConnectionState.Open)
                {
                    sqlCon.Close();
                }
            }
            return sdr;
     
        }
        // 执行有参数的ExecuteReader

        public SqlDataReader ExecuteReader(string sql,SqlParameter[] sqlPara,CommandType ct)
        {
            SqlDataReader sdr = null;
            sqlCom = new SqlCommand(sql,getCon());
            sqlCom.Parameters.AddRange(sqlPara);
            using (sdr=sqlCom.ExecuteReader(CommandBehavior.CloseConnection))
            {
                
            }
            return sdr;
        }

        // 执行无参数的ExecuteQuery
        public DataTable ExecuteQuery(string sql,CommandType ct)
        {
            DataTable dt = null;
            SqlDataReader sdr = null;
            try
            {
                sqlCom = new SqlCommand(sql, getCon());
                sqlCom.CommandType = ct;
                using (sdr = sqlCom.ExecuteReader(CommandBehavior.CloseConnection))
                {
                    dt.Load(sdr);
                }

            }
            catch (Exception ex)
            {

                throw ex;
            }
            finally
            {
                if (sqlCon.State==ConnectionState.Open)
                {
                    sqlCon.Close();
                }
            }
            return dt;
        }

        // 执行有参数的ExecuteQuery
        public DataTable ExecuteQuery(string sql, SqlParameter[] sqlPara, CommandType ct)
        {
            DataTable dt = null;
            SqlDataReader sdr = null;
            sqlCom = new SqlCommand(sql,getCon());
            sqlCom.CommandType = ct;
            sqlCom.Parameters.AddRange(sqlPara);
            using (sdr=sqlCom.ExecuteReader(CommandBehavior.CloseConnection))
            {
                dt.Load(sdr);
            }
            return dt;
        }
    }
    <connectionStrings>
    <add name="conStr" connectionString="server=.;database=schoolnews;uid=sa;pwd=;"/>
    </connectionStrings>
  • 相关阅读:
    【UOJ #46】 【清华集训2014】玄学
    【BZOJ3626】 [LNOI2014]LCA
    THUSC 2017 游记
    Cqoi2017试题泛做
    全国高校程序设计大赛 评定奖学金
    全国高校程序设计大赛 素数和偶数
    全国高校程序设计大赛 八进制数中含7的总个数
    全国高校程序设计大赛 电商促销
    PTA 02-线性结构1 两个有序链表序列的合并
    PTA 02-线性结构2 一元多项式的乘法与加法运算
  • 原文地址:https://www.cnblogs.com/hishanghai/p/2520647.html
Copyright © 2011-2022 走看看