zoukankan      html  css  js  c++  java
  • 分享一个简单的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对象关闭时自动关闭.

  • 相关阅读:
    内部类
    抽象类与接口
    多态
    继承
    封装
    创建对象的内存分析
    构造器
    面向对象 类与对象
    uniapp跳转
    uniapp-组件引用错误,仅支持 import 方式引入组件
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/12306918.html
Copyright © 2011-2022 走看看