• 分享一个简单的C#的通用DbHelper类(支持数据连接池)


    每次新项目的时候,都要从头去找一遍数据库工具类。这里分享一个简单实用的C#的通用DbHelper工具类,支持数据连接池。

    连接池配置

    <connectionStrings>
      <add name="dh_web" connectionString="Data Source=xxx.com;Initial Catalog=xx_db;User ID=xx;Password=**;
          pooling=true;max pool size=200" providerName="System.Data.SqlClient"/>
    </connectionStrings>

    DbHelper类

    public class DBHelper
        {
            private static string connectionString = ConfigurationManager.ConnectionStrings["dh_web"].ConnectionString;
          
            //不带参数的执行命令
            public static int ExecuteCommand(string safeSql)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand(safeSql, connection);
                    return cmd.ExecuteNonQuery();
                }
            }
            //带参数的执行命令
            public static int ExecuteCommand(string sql, params SqlParameter[] values)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand(sql, connection);
                    cmd.Parameters.AddRange(values);
                    return cmd.ExecuteNonQuery();
                }
            }
     
            public static int GetScalar(string safeSql)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand(safeSql, connection);
                    return Convert.ToInt32(cmd.ExecuteScalar());
                }
            }
            public static int GetScalar(string sql, params SqlParameter[] values)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand cmd = new SqlCommand(sql, connection);
                    cmd.Parameters.AddRange(values);
                    return Convert.ToInt32(cmd.ExecuteScalar());
                }
            }
     
            public static SqlDataReader GetReader(string safeSql)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                connection.Open();
                SqlCommand cmd = new SqlCommand(safeSql, connection);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
     
            public static SqlDataReader GetReader(string sql, params SqlParameter[] values)
            {
                SqlConnection connection = new SqlConnection(connectionString);
                connection.Open();
                SqlCommand cmd = new SqlCommand(sql, connection);
                cmd.Parameters.AddRange(values);
                return cmd.ExecuteReader(CommandBehavior.CloseConnection);
            }
     
            public static DataTable GetDataSet(string safeSql)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    SqlCommand cmd = new SqlCommand(safeSql, connection);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(ds);
                    return ds.Tables[0];
                }
            }
     
            public static DataTable GetDataSet(string sql, params SqlParameter[] values)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {               
                    DataSet ds = new DataSet();
                    SqlCommand cmd = new SqlCommand(sql, connection);
                    cmd.Parameters.AddRange(values);
                    SqlDataAdapter da = new SqlDataAdapter(cmd);
                    da.Fill(ds);
                    return ds.Tables[0];
                }
            }
        }

    注意:
    CommandBehavior.CloseConnection解决了流读取数据模式下,数据库连接不能有效关闭的情况.
    当某个XXXDataReader对象在生成时使用了CommandBehavior.CloseConnection,那数据库连接将在XXXDataReader对象关闭时自动关闭.

  • 相关阅读:
    【数据分析】6 点发的文章在博客园阅读量最高?
    canvas api 速记
    leetcode 315. Count of Smaller Numbers After Self 两种思路
    一道闭包题题解
    一道经典JS题(关于this)
    HTML5 — 让拖放变的流行起来
    你应该知道的25道Javascript面试题
    关于base64编码的原理和实现
    Python中的None
    Python字符编码和转码
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/12306918.html
Copyright © 2020-2023  润新知