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对象关闭时自动关闭.

  • 相关阅读:
    毕业设计进度5(2月5日)
    毕业设计进度4(2月4日)
    Intellij IDEA 安装Scala插件 + 创建Scala项目
    中国HBase技术社区第一届Meetup资料大合集
    【大会PPT+直播回顾】HBaseCon亚洲2018峰会
    Java 中的锁原理、锁优化、CAS、AQS 详解!
    Reactor 反应堆设计模式
    IO模型
    浅析Reactor设计模式
    将IDEA工程代码提交到Github
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/12306918.html
Copyright © 2011-2022 走看看