SqlHelper

Class SqlHelper

1.    模型
    1)非查询模型
    using(SqlConnection conn = new SqlConnection(connStr))
    {
        using(SqlCommand cmd = new SqlCommand(sql,conn))
        {
            cmd.Parameters.AddRange(ps);
            conn.Open();
            cmd.ExecuteNonQuery();
        }
    }
    
    2)聚合函数查询模型
    using(SqlConnection conn = new SqlConnection(connStr))
    {
        using(SqlCommand cmd = new SqlCommand(sql,conn))
        {
            cmd.Parameters.AddRange(ps);
            conn.Open();
            cmd.ExecuteScalar();
        }
    }
    
    3)查询模型
    using(SqlConnection conn = new SqlConnection(connStr))
    {
        using(SqlCommand cmd = new SqlCommand(sql,conn))
        {
            cmd.Parameters.AddRange(ps);
            conn.Open();
            cmd.ExecuteReader();
        }
    }
    
    4)DataSet模型
    DataSet ds = new DataSet();
    using(SqlDataAdapter sda = new SqlDataAdapter(sql,connStr))
    {
        sda.Fill(ds);
    }
    
    整合方法 ps --> parameters
    非查询模型 --> int count = ExecuteNonQuery(sql,ps)
    聚合函数查询模型 --> object o = ExecuteScalar(sql,ps)
    查询模型 --> SqlDataReader reader = ExecuteReader(sql,ps)
    DataSet模型 --> DataSet ds = ExecuteDataSet(sql,ps)
    
2.    类
namespace CLLibrary
{
    class SqlHelper
    {
        static string connStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionString;

        public static int ExecuteNonQuery(string sql, params SqlParameter[] ps)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(ps);
                    conn.Open();
                    return cmd.ExecuteNonQuery();
                }
            }
        }

        public static object ExecuteScalar(string sql, params SqlParameter[] ps)
        {
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(ps);
                    conn.Open();
                    return cmd.ExecuteScalar();
                }
            }
        }

        // 第一个问题
        // Reader对象每Read()一次 到数据库里拿一次数据 --> 连接是不能断的
        // 只要离开using块,就会触发dispose方法,连接关掉,read()就无法执行了
        // 那么如果连接不中断,那么又会产生一个问题 --> 就无法对connection进行dispose了
        // 第二个问题
        // 读数据的时候发生了异常,那么程序停止,关闭connection的方法就不会执行了
        // 因此需要手动关闭

        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] ps)
        {
            SqlConnection conn = new SqlConnection(connStr);
            try
            {                
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    cmd.Parameters.AddRange(ps);
                    conn.Open();
                    //当Reader对象关闭,就将连接关闭
                    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
            }
            catch (Exception ex)
            {
                conn.Dispose();
                throw ex;   //异常不要吃掉,需要一步一步往上抛
            }
            
        }


        public static DataSet ExecuteDataSet(string sql, params SqlParameter[] ps)
        {
            DataSet ds = new DataSet();
            using (SqlDataAdapter sda = new SqlDataAdapter(sql, connStr))
            {
                //采用这种方法为sql语句添加需要的参数
                sda.SelectCommand.Parameters.AddRange(ps);
                sda.Fill(ds);
            }
            return ds;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值