ADO.NET帮助类DBHelper
一. DBHelper帮助类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace DAL { /// <summary> /// 数据库操作帮助类 /// </summary> public class DBHelper { //连接字符串,从web.config中获取 public static string conStr = ConfigurationManager.ConnectionStrings["DBConnectionString1"].ConnectionString; /// <summary> /// 获取SqlCommand对象 /// </summary> /// <param name="sql">sql语句</param> /// <param name="conn">数据库连接对象</param> /// <param name="pars">参数集</param> /// <returns>SqlCommand对象</returns> private static SqlCommand GetSqlCommand(string sql, SqlConnection conn, params SqlParameter[] pars) { conn.Open(); SqlCommand comm = new SqlCommand(sql, conn); comm.Parameters.AddRange(pars); return comm; } /// <summary> /// 设置SqlCommand对象的值 /// </summary> /// <param name="comm">SqlCommand对象</param> /// <param name="commandText">需要执行的sql语句或存储过程名称</param> /// <param name="conn">数据库连接对象</param> /// <param name="type">执行的类型(sql语句类型或存储过程类型)</param> private static void SetSqlCommand(SqlCommand comm, string commandText, SqlConnection conn, CommandType type) { comm.CommandText = commandText; comm.Connection = conn; comm.CommandType = type; } /// 查询返回SqlDataReader,读取数据完毕后必须关闭SqlDataReader,会自动释放数据库连接 /// </summary> /// <param name="sql">sql语句</param> /// <param name="pars">参数集</param> /// <returns>SqlDataReader</returns> public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] pars) { SqlConnection conn = new SqlConnection(conStr); SqlCommand comm = GetSqlCommand(sql, conn, pars); return comm.ExecuteReader(CommandBehavior.CloseConnection); } /// <summary> /// 执行查询,返回结果集的第一行第一列数据 /// </summary> /// <param name="sql">sql语句</param> /// <param name="pars">参数集</param> /// <returns>单个数据</returns> public static object ExecuteScalar(string sql, params SqlParameter[] pars) { using (SqlConnection conn = new SqlConnection(conStr)) { SqlCommand comm = GetSqlCommand(sql, conn, pars); return comm.ExecuteScalar(); } } /// <summary> /// 执行增删改操作 /// </summary> /// <param name="sql">sql语句</param> /// <param name="pars">参数集</param> /// <returns>受影响的行数</returns> public static int ExecuteNonQuery(string sql, params SqlParameter[] pars) { using (SqlConnection conn = new SqlConnection(conStr)) { SqlCommand comm = GetSqlCommand(sql, conn, pars); return comm.ExecuteNonQuery(); } } /// <summary> /// 执行查询语句,返回DataTable /// </summary> /// <param name="sql">sql语句</param> /// <param name="pars">参数集</param> /// <returns>DataTable</returns> public static DataTable ExecuteAdapter(string sql, params SqlParameter[] pars) { DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(conStr)) { SqlDataAdapter adapter = new SqlDataAdapter(sql, conn); adapter.SelectCommand.Parameters.AddRange(pars); adapter.Fill(dt); } return dt; } /// 调用存储过程返回SqlDataReader,读取数据完毕后必须关闭SqlDataReader,会自动释放数据库连接 /// </summary> /// <param name="procedureName">存储过程名称</param> /// <param name="comm">Sqlcommand对象</param> /// <returns>SqlDataReader</returns> public static SqlDataReader ExecuteReader(string procedureName, SqlCommand comm) { SqlConnection conn = new SqlConnection(conStr); SetSqlCommand(comm, procedureName, conn, CommandType.StoredProcedure); return comm.ExecuteReader(CommandBehavior.CloseConnection); } /// <summary> /// 调用存储过程,返回结果集的第一行第一列数据 /// </summary> /// <param name="procedureName">存储过程名称</param> /// <param name="comm">Sqlcommand对象</param> /// <returns>单个数据</returns> public static object ExecuteScalar(string procedureName, SqlCommand comm) { using (SqlConnection conn = new SqlConnection(conStr)) { SetSqlCommand(comm, procedureName, conn, CommandType.StoredProcedure); return comm.ExecuteScalar(); } } /// <summary> /// 调用存储过程,执行非查询操作(增删改) /// </summary> /// <param name="procedureName">存储过程名称</param> /// <param name="comm">Sqlcommand对象</param> /// <returns>受影响的行数</returns> public static int ExecuteNonQuery(string procedureName, SqlCommand comm) { using (SqlConnection conn = new SqlConnection(conStr)) { SetSqlCommand(comm, procedureName, conn, CommandType.StoredProcedure); return comm.ExecuteNonQuery(); } } /// <summary> /// 执行存储过程,返回DataTable /// </summary> /// <param name="procedureName">存储过程名称</param> /// <param name="comm">Sqlcommand对象</param> /// <returns>DataTable</returns> public static DataTable ExecuteAdapter(string procedureName, SqlCommand comm) { DataTable dt = new DataTable(); using (SqlConnection conn = new SqlConnection(conStr)) { SetSqlCommand(comm, procedureName, conn, CommandType.StoredProcedure); SqlDataAdapter adapter = new SqlDataAdapter(comm); adapter.Fill(dt); } return dt; } /// <summary> /// 使用事务执行多个非查询操作,sql语句不能相同 /// </summary> /// <param name="sqlList">键:sql语句 值:参数集</param> /// <returns>是否全都成功执行</returns> public static bool ExecuteWithTransaction(Dictionary<string, List<SqlParameter>> sqlList) { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); SqlTransaction tran = conn.BeginTransaction(); SqlCommand comm = new SqlCommand(); comm.Connection = conn; comm.Transaction = tran; try { foreach (var v in sqlList) { comm.Parameters.Clear(); comm.CommandText = v.Key; if (v.Value != null && v.Value.Count > ) { comm.Parameters.AddRange(v.Value.ToArray()); } comm.ExecuteNonQuery(); } tran.Commit(); return true; } catch (Exception) { tran.Rollback(); return false; } } } /// <summary> /// 使用事务执行多个非查询操作,通用 /// </summary> /// <param name="sqlList">SQL对象</param> /// <returns>是否全都成功执行</returns> public static bool ExecuteWithTransaction(List<SQL> sqlList) { using (SqlConnection conn = new SqlConnection(conStr)) { conn.Open(); SqlTransaction tran = conn.BeginTransaction(); SqlCommand comm = new SqlCommand(); comm.Connection = conn; comm.Transaction = tran; try { foreach (var v in sqlList) { comm.Parameters.Clear(); comm.CommandText = v.Sql; if (v.ParameterList != null && v.ParameterList.Count > ) { comm.Parameters.AddRange(v.ParameterList.ToArray()); } comm.ExecuteNonQuery(); } tran.Commit(); return true; } catch (Exception) { tran.Rollback(); return false; } } } } /// <summary> /// SQL类,包含sql语句和参数集 /// </summary> public class SQL { public string Sql { get; set; } public List<SqlParameter> ParameterList { get; set; } public SQL(string sql, List<SqlParameter> pars) { this.Sql = sql; this.ParameterList = pars; } public SQL(string sql) { this.Sql = sql; } public SQL() { } } }
二.例子
存储过程
alter proc p_getByGender @Gender char()=, @Count int output as declare @CountSql nvarchar() set @CountSql='select @Count=count(1) from Student' exec sp_executesql @CountSql,N'@Count int output',@Count output declare @Sql nvarchar() set @Sql='select * from Student where Gender = '+CHAR()+@Gender+CHAR() print @Gender print @Sql exec(@Sql) go
ADO.net调用
//创建SqlCommand对象 SqlCommand comm = new SqlCommand(); //设置存储过程的参数 comm.Parameters.Add("@Count", SqlDbType.Int).Direction = ParameterDirection.Output; comm.Parameters.Add("@Gender", SqlDbType.Char, ).Value = ; //调用DBHelper的方法返回结果 DataTable dt=DBHelper.ExecuteAdapter("p_getByGender", comm); //储存过程的输出参数 int count = (int)comm.Parameters["@Count"].Value;
ADO.NET帮助类DBHelper的更多相关文章
- ADO.NET sqlHelper类(DBHelper类)
1.配置文件 <connectionStrings> <add name="constr" connectionString="Data Source= ...
- 我也来写:数据库访问类DBHelper
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- 我也来写:数据库访问类DBHelper(转)
一.前言 相信许多人都百度过:“.net 数据库访问类”.然后就出来一大堆SqlHelper.我也用过这些SqlHelper,也自己写过,一堆静态方法,开始使用起来感觉很不错,它们也确实在很多时候可以 ...
- C#.NET数据库访问类DBHelper
这是一个与C# .NET通用的数据库访问类,包含了工厂模式.事务处理等安全机制. 调用方式: DBHelper db = new DBHelper(); DbCommand cmd = db.GetS ...
- 通用数据库帮助类DBHelper(含log日志信息实时记录)
项目需要,需要一个通用的数据库操作类,增删改查.事务.存储过程.日志记录都要有,于是在已有的帮助类上做了一些改进,并将log4j的.NET版--log4net嵌入其中记录sql的执行环境和状态. 用起 ...
- 数据帮助类DBhelper的定义
数据库帮助类的使用DBhelperusing System;using System.Collections.Generic;using System.Text;using System.Data;u ...
- 数据库助手类 DBHelper
using System; using System.Collections.Generic; using System.Text; using System.Configuration; using ...
- ado.net 实体类_数据访问类
实体类: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...
- ADO.NET 实体类和数据访问类
SQL数据库字符串注入攻击:需要使用cmd.Parameters这个集合占位符: @key 代表这个位置用这个占位符占住了 Parameters这个集合中将此占位符所代表的数据补全 cmd.Param ...
随机推荐
- PHP结合Linux的cron命令实现定时任务
PHP死循环 来处理定时任务的效率是很低的.(众多网友评价)大家都建议使用Linux内置的定时任务crontab命令来调用php脚本来实现. PHP定时任务的两种方法:1.web方式调用php网页,但 ...
- EditText获取焦点监听事件_EditText获取和失去焦点操作
今天在做搜索框的时候.遇到需要获取焦点之后做一些事情.实现方法也很简单.那就是绑定OnFocusChangeListener事件.实现 onFocusChange(View v, boolean ha ...
- scheme 模拟queue
[code 1] shows a implementation of queue. The function enqueue! returns a queue in that the obj is a ...
- UVA 10152-ShellSort(映射+栈)
题意: 给出一堆乌龟名字,乌龟能从本身位置爬到顶端. 要求求出从原本的顺序到目标顺序的最小操作.输出每次操作移到顶端的乌龟的名字. 解析:名字用映射对应编号,把目标状态的乌龟从上到下的编号按1到N编好 ...
- 使用sae定时执行Python脚本
使用sae定时执行Python脚本 使用sae定时执行Python脚本 12,May,2014 | 57 Views 毕设压力略大,必须是桂林游的锅.去之前放松了几天,回来又休闲了几天,加上桂林的一周 ...
- SQL Server 数据库定时自动备份【转】
在SQL Server中出于数据安全的考虑,所以需要定期的备份数据库.而备份数据库一般又是在凌晨时间基本没有数据库操作的时候进行,所以我们不可能要求管理员每天守到晚上1点去备份数据库.要实现数据库的定 ...
- Segment(技巧 相乘转换成相加 + java)
Segment Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- webpack+gulp实现自动构建部署
项目结构说明 . ├── gulpfile.js # gulp任务配置 ├── mock/ # 假数据文件 ├── package.json # 项目配置 ├── README.md # 项目说明 ├ ...
- visual studio 2010 C语言声明异常
如下这段程序,是C_Primer_plus_第五版内的一个复习题答案(感觉声明i的值有问题),在GCC上面可以运行,但是移植到VS2010就一堆错误, #include<stdio.h> ...
- oracle中的rowid--伪列-删除表中的重复内容-实用
1.rowid是一个伪列,是用来确保表中行的唯一性,它并不能指示出行的物理位置,但可以用来定位行. 2.rowid是存储在索引中的一组既定的值(当行确定后).我们可以像表中普通的列一样将它选出来. 3 ...