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

  • 相关阅读:
    项目相关的风险要素及分类
    IT从业人员必看的10个论坛(转)
    Android Input设备debug技巧
    Android中如何判断是否联网
    paip.tree 生成目录树到txt后的折叠查看
    hdu 4737 A Bit Fun
    FLASH ROM与EEPROM的区别
    Robot Framework学习路线
    Distinguishing Between Embedded and General-Purpose Computing
    服务的生命周期
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/12306918.html
Copyright © 2011-2022 走看看