C#的通用DbHelper类(支持数据连接池)示例详解
作者:已秃未强 时间:2022-01-14 11:59:56
每次新项目的时候,都要从头去找一遍数据库工具类。这里分享一个简单实用的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)
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.AddRange(values);
public static int GetScalar(string safeSql)
return Convert.ToInt32(cmd.ExecuteScalar());
public static int GetScalar(string sql, params SqlParameter[] values)
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)
SqlCommand cmd = new SqlCommand(sql, connection);
cmd.Parameters.AddRange(values);
public static DataTable GetDataSet(string safeSql)
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
return ds.Tables[0];
public static DataTable GetDataSet(string sql, params SqlParameter[] values)
{
}
注意:
CommandBehavior.CloseConnection解决了流读取数据模式下,数据库连接不能有效关闭的情况.
当某个XXXDataReader对象在生成时使用了CommandBehavior.CloseConnection,那数据库连接将在XXXDataReader对象关闭时自动关闭.
来源:https://www.cnblogs.com/equals/p/16075980.html
标签:C#,DbHelper,类
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
解决Android ListView数据为空及加载错误的方法
2022-11-30 06:57:41
![](https://img.aspxhome.com/file/2023/1/91011_0s.png)
Android编程实现点击EditText之外的控件隐藏软键盘功能
2022-08-07 02:06:08
Flutter app页面路由以及路由拦截的实现
2023-06-23 14:21:18
![](https://img.aspxhome.com/file/2023/0/87300_0s.gif)
SpringBoot文件上传控制及Java 获取和判断文件头信息
2021-12-10 16:47:20
![](https://img.aspxhome.com/file/2023/1/84771_0s.png)
Java Validation方法入参校验实现过程解析
2021-08-04 03:31:50
Groovy的规则脚本引擎实例解读
2023-07-11 21:24:04
![](https://img.aspxhome.com/file/2023/6/65186_0s.jpg)
FastJSON字段智能匹配踩坑的解决
2022-07-29 19:32:26
![](https://img.aspxhome.com/file/2023/0/64540_0s.png)
SpringBoot如何根据用户系统时区动态展示时间
2021-09-23 23:37:10
java实现的RSA加密算法详解
2022-11-19 06:14:44
学习Java九大内置对象
2023-10-13 01:10:10
Java程序控制逻辑—流程控制
2023-08-28 01:51:18
C#实现跨线程操作控件方法
2023-06-30 13:47:39
SpringCloud灾难性雪崩效应处理方法之降级实现流程详解
2022-03-24 15:31:36
用C#生成不重复的随机数的代码
2023-03-08 03:36:52
Java语言描述MD5加密工具类实例代码
2021-09-18 07:07:34
maven profile实现多环境配置的示例
2023-09-24 12:02:57
![](https://img.aspxhome.com/file/2023/3/64513_0s.png)
IntelliJ IDEA 2019.1.1 for MAC 下载和注册码激活教程图解
2023-07-23 08:01:50
![](https://img.aspxhome.com/file/2023/8/62648_0s.jpg)
android编程实现对话框的封装实例
2022-02-12 12:58:54
Java jpa外连接查询join案例详解
2022-12-17 18:31:15
Windows系统中使用C#编写蓝牙通信程序的简单实例
2022-03-02 00:12:10
![](https://img.aspxhome.com/file/2023/4/96344_0s.jpg)