ADO.NET sqlHelper类(DBHelper类)
2024-09-04 14:00:38
1.配置文件
<connectionStrings>
<add name="constr" connectionString="Data Source=.;Initial Catalog=NovelDitle;Integrated Security=True"/>
</connectionStrings>
2.静态类 命名空间的引入等
这里我只写了主要要用到的命名空间
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
3.私有连接字符串 全局变量
//私有连接字符串
private static string conStr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
4.写静态方法
这里的三个参数分别指的是:sql语句 存储过程 可变参数(防sql注入)
①//离线查询 返回datatable
public static DataTable ExecuteDataTable(string sql,CommandType cmdType, params SqlParameter[] par)
{
//datatable对象
DataTable dt = new DataTable(); //用于处理非托管对象。某些类型的非托管对象有数量限制或很消耗系统资源。为了及时释放资源,使用using语句可以确保这些资源适当地处置(dispose)
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
{
//存储过程赋值
adapter.SelectCommand.CommandType = cmdType;
//判断参数不为空 长度>0
if (par != null)
{
//向数组参数中添加值
adapter.SelectCommand.Parameters.AddRange(par);
}
//填充数据
adapter.Fill(dt);
return dt;//返回值
}
}
②//在线查询,返回SqlDataReader
public static SqlDataReader ExecuteDataReader(string sql,CommandType cmdType, params SqlParameter[] par)
{
//SqlConnection要始终保持打开状态 不能使用using释放资源
SqlConnection conn = new SqlConnection(conStr); using (SqlCommand com = new SqlCommand(sql, conn))
{
//存储过程赋值
com.CommandType = cmdType; //判断参数不为空
if (par != null)
{
//传入参数
com.Parameters.AddRange(par);
}
try
{
//如果连接状态关闭
if (conn.State==ConnectionState.Closed)
{
//打开连接
conn.Open();
}
//返回结果 参数:当关闭reader时也关闭SqlConnection
return com.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception)
{
//关闭连接
conn.Close();
//释放资源
conn.Dispose();
throw;//抛出异常
}
}
}
③增删改操作
public static int ExecuteNonQuery(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com=new SqlCommand(sql,conn))
{
com.CommandType = cmdType; if (par!=null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteNonQuery();
}
}
}
④返回单个值
public static object ExecuteScalar(string sql,CommandType cmdType,params SqlParameter[] par)
{
using (SqlConnection conn = new SqlConnection(conStr))
{
using (SqlCommand com = new SqlCommand(sql, conn))
{
com.CommandType = cmdType; if (par != null)
{
com.Parameters.AddRange(par);
}
conn.Open(); return com.ExecuteScalar();
}
}
}
最新文章
- LinqToDB 源码分析——生成与执行SQL语句
- servlet/filter/listener/interceptor区别与联系
- AJAX避免服务器调用上个页面缓存的办法
- TortoiseSVN安装使用
- java 处理xml格式数据
- tostring格式化输出
- Java笔记1 : 在生产者消费者模式中,线程通信与共享数据,死锁问题与解决办法
- 洛谷 P1026 统计单词个数
- BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )
- SQL优化 总结 精简
- linux下vsftpd的安装及配置使用详细步骤
- vue-使用keep-alive优化网页性能
- 当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用)
- 排序算法之希尔排序的思想以及Java实现
- Gedit浏览器常用快捷键备注
- [NIO-4]选择器
- python 牛客网 你的输出为:空。请检查一下你的代码,有没有循环输入处理多个case。问题解决
- prvReadAsyncOperation
- linux配置虚拟主机
- vi 基础配置