/// <summary>
/// 类说明:公共的数据库访问访问类
/// 编码日期:2010-4-22
/// 编 码 人:苏飞
/// 联系方式:361983679  Email:[url=mailto:sufei.1013@163.com]sufei.1013@163.com[/url]  Blogs:[url=http://www.sufeinet.com]http://www.sufeinet.com[/url]
/// 修改日期:2013-08-15
/// </summary>
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Collections;
namespace DotNet.Utilities
{/// <summary>/// 数据库的通用访问代码 苏飞修改/// 此类为抽象类,/// 不允许实例化,在应用时直接调用即可/// </summary>public abstract class SqlHelper{/// <summary>/// 数据库连接字符串/// </summary>public static readonly string connectionString = System.Configuration.ConfigurationSettings.AppSettings["con"].ToString().Trim();// Hashtable to store cached parametersprivate static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());#region //ExecteNonQuery方法/// <summary>///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。/// 使用参数数组形式提供参数列表 /// </summary>/// <param name="connectionString">一个有效的数据库连接字符串</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>public static int ExecteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection conn = new SqlConnection(connectionString)){//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);int val = cmd.ExecuteNonQuery();//清空SqlCommand中的参数列表
                cmd.Parameters.Clear();return val;}}/// <summary>///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。/// 使用参数数组形式提供参数列表 /// </summary>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>public static int ExecteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){return ExecteNonQuery(connectionString, cmdType, cmdText, commandParameters);}/// <summary>///存储过程专用/// </summary>/// <param name="cmdText">存储过程的名字</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>public static int ExecteNonQueryProducts(string cmdText, params SqlParameter[] commandParameters){return ExecteNonQuery(CommandType.StoredProcedure, cmdText, commandParameters);}/// <summary>///Sql语句专用/// </summary>/// <param name="cmdText">T_Sql语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>public static int ExecteNonQueryText(string cmdText, params SqlParameter[] commandParameters){return ExecteNonQuery(CommandType.Text, cmdText, commandParameters);}#endregion#region//GetTable方法/// <summary>/// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接/// 使用参数数组提供参数/// </summary>/// <param name="connecttionString">一个现有的数据库连接</param>/// <param name="cmdTye">SqlCommand命令类型</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>public static DataTableCollection GetTable(string connecttionString, CommandType cmdTye, string cmdText, SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();DataSet ds = new DataSet();using (SqlConnection conn = new SqlConnection(connecttionString)){PrepareCommand(cmd, conn, null, cmdTye, cmdText, commandParameters);SqlDataAdapter adapter = new SqlDataAdapter();adapter.SelectCommand = cmd;adapter.Fill(ds);}DataTableCollection table = ds.Tables;return table;}/// <summary>/// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接/// 使用参数数组提供参数/// </summary>/// <param name="cmdTye">SqlCommand命令类型</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>public static DataTableCollection GetTable(CommandType cmdTye, string cmdText, SqlParameter[] commandParameters){return GetTable(SqlHelper.connectionString, cmdTye, cmdText, commandParameters);}/// <summary>/// 存储过程专用/// </summary>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>public static DataTableCollection GetTableProducts(string cmdText, SqlParameter[] commandParameters){return GetTable(CommandType.StoredProcedure, cmdText, commandParameters);}/// <summary>/// Sql语句专用/// </summary>/// <param name="cmdText"> T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>public static DataTableCollection GetTableText(string cmdText, SqlParameter[] commandParameters){return GetTable(CommandType.Text, cmdText, commandParameters);}#endregion/// <summary>/// 为执行命令准备参数/// </summary>/// <param name="cmd">SqlCommand 命令</param>/// <param name="conn">已经存在的数据库连接</param>/// <param name="trans">数据库事物处理</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">Command text,T-SQL语句 例如 Select * from Products</param>/// <param name="cmdParms">返回带参数的命令</param>private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms){//判断数据库连接状态if (conn.State != ConnectionState.Open)conn.Open();cmd.Connection = conn;cmd.CommandText = cmdText;//判断是否需要事物处理if (trans != null)cmd.Transaction = trans;cmd.CommandType = cmdType;if (cmdParms != null){foreach (SqlParameter parm in cmdParms)cmd.Parameters.Add(parm);}}/// <summary>/// Execute a SqlCommand that returns a resultset against the database specified in the connection string /// using the provided parameters./// </summary>/// <param name="connectionString">一个有效的数据库连接字符串</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>A SqlDataReader containing the results</returns>public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();SqlConnection conn = new SqlConnection(connectionString);// we use a try/catch here because if the method throws an exception we want to // close the connection throw code, because no datareader will exist, hence the // commandBehaviour.CloseConnection will not worktry{PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);cmd.Parameters.Clear();return rdr;}catch{conn.Close();throw;}}#region//ExecuteDataSet方法/// <summary>/// return a dataset/// </summary>/// <param name="connectionString">一个有效的数据库连接字符串</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>return a dataset</returns>public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();try{using (SqlConnection conn = new SqlConnection(connectionString)){PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);SqlDataAdapter da = new SqlDataAdapter();DataSet ds = new DataSet();da.SelectCommand = cmd;da.Fill(ds);return ds;}}catch{throw;}}/// <summary>/// 返回一个DataSet/// </summary>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>return a dataset</returns>public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){return ExecuteDataSet(connectionString, cmdType, cmdText, commandParameters);}/// <summary>/// 返回一个DataSet/// </summary>/// <param name="cmdText">存储过程的名字</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>return a dataset</returns>public static DataSet ExecuteDataSetProducts(string cmdText, params SqlParameter[] commandParameters){return ExecuteDataSet(connectionString, CommandType.StoredProcedure, cmdText, commandParameters);}/// <summary>/// 返回一个DataSet/// </summary>/// <param name="cmdText">T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>return a dataset</returns>public static DataSet ExecuteDataSetText(string cmdText, params SqlParameter[] commandParameters){return ExecuteDataSet(connectionString, CommandType.Text, cmdText, commandParameters);}public static DataView ExecuteDataSet(string connectionString, string sortExpression, string direction, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();try{using (SqlConnection conn = new SqlConnection(connectionString)){PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);SqlDataAdapter da = new SqlDataAdapter();DataSet ds = new DataSet();da.SelectCommand = cmd;da.Fill(ds);DataView dv = ds.Tables[0].DefaultView;dv.Sort = sortExpression + " " + direction;return dv;}}catch{throw;}}#endregion#region // ExecuteScalar方法/// <summary>/// 返回第一行的第一列/// </summary>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个对象</returns>public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){return ExecuteScalar(SqlHelper.connectionString, cmdType, cmdText, commandParameters);}/// <summary>/// 返回第一行的第一列存储过程专用/// </summary>/// <param name="cmdText">存储过程的名字</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个对象</returns>public static object ExecuteScalarProducts(string cmdText, params SqlParameter[] commandParameters){return ExecuteScalar(SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);}/// <summary>/// 返回第一行的第一列Sql语句专用/// </summary>/// <param name="cmdText">者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>返回一个对象</returns>public static object ExecuteScalarText(string cmdText, params SqlParameter[] commandParameters){return ExecuteScalar(SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);}/// <summary>/// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));/// </remarks>/// <param name="connectionString">一个有效的数据库连接字符串</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();using (SqlConnection connection = new SqlConnection(connectionString)){PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);object val = cmd.ExecuteScalar();cmd.Parameters.Clear();return val;}}/// <summary>/// Execute a SqlCommand that returns the first column of the first record against an existing database connection /// using the provided parameters./// </summary>/// <remarks>/// e.g.:  ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));/// </remarks>/// <param name="connectionString">一个有效的数据库连接字符串</param>/// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>/// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>/// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>/// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){SqlCommand cmd = new SqlCommand();PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);object val = cmd.ExecuteScalar();cmd.Parameters.Clear();return val;}#endregion/// <summary>/// add parameter array to the cache/// </summary>/// <param name="cacheKey">Key to the parameter cache</param>/// <param name="cmdParms">an array of SqlParamters to be cached</param>public static void CacheParameters(string cacheKey, params SqlParameter[] commandParameters){parmCache[cacheKey] = commandParameters;}/// <summary>/// Retrieve cached parameters/// </summary>/// <param name="cacheKey">key used to lookup parameters</param>/// <returns>Cached SqlParamters array</returns>public static SqlParameter[] GetCachedParameters(string cacheKey){SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];if (cachedParms == null)return null;SqlParameter[] clonedParms = new SqlParameter[cachedParms.Length];for (int i = 0, j = cachedParms.Length; i < j; i++)clonedParms = (SqlParameter)((ICloneable)cachedParms).Clone();return clonedParms;}/// <summary>/// 检查是否存在/// </summary>/// <param name="strSql">Sql语句</param>/// <param name="cmdParms">参数</param>/// <returns>bool结果</returns>public static bool Exists(string strSql, params SqlParameter[] cmdParms){int cmdresult = Convert.ToInt32(ExecuteScalar(connectionString, CommandType.Text, strSql, cmdParms));if (cmdresult == 0){return false;}else{return true;}}}
}

转载于:https://www.cnblogs.com/lizeyan/p/3627822.html

最新的C#SqlHelper 类苏飞修改版(转载)相关推荐

  1. MSSQL数据库C#操作类(SQLHELPER类的修改版)

    using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...

  2. 彩虹代shua最新6.6版本源码/修改版/后台同步官方版本升级

    介绍: 写在前面 本程序由'凡致'提供技术支持 这个版本就是你们口中所说的'绿色'版或者'二开'版,不知道为什么会有人定义它为'绿色版',有人对'绿色版'甚是躲避,但是你真要去对比的话这个'绿色版'似 ...

  3. 源支付6.27版本最新源码阿细小屋修改版

    6.27通道更加稳定  比之前用的5.18开新版稳定很多 支持三网秒回调  费率自由设置  自营更好 再也不用担心跑路了 不想搭建的可以对接使用  费率低稳定不跑路 源码解压:axixw 演示站 源码 ...

  4. 2023最新Joe素颜执念修改版模板源码+Typecho内核开发/UI大气高端

    正文: 修改内容如下: 2.主题新增弹幕功能,开启后界面展示弹幕 3.主题新增在线人数统计,开启后底部展示在线人数 4.主题新增互动读者侧边栏,开启后侧边栏展示活跃用户 5.主题新增文章字数和阅读时长 ...

  5. ACCESS数据库C#操作类(SQLHELPER修改版)——转自网上

    ACCESS数据库C#操作类(SQLHELPER修改版) 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所 ...

  6. 列字段通用excel导入修改版

    最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--列字段 入导Excel对网上通用excel入导修改版:处理Excel中单元格为数字问题.可以连续取读多个sheet 每日一道理 书,各种 ...

  7. fc天使之翼2020修改版下载_(安卓游戏)闲置超市大亨无限金钱版、模拟经营——安卓游戏下载资讯攻略信息...

    点击上方蓝字 关注我们 1.游戏简介 游戏名称:闲置超市大亨无限金钱版 游戏类型:模拟经营 游戏平台:安卓 整理时间:2020-08-17 游戏评分:8.5 2.游戏介绍心得技巧分享 特别说明 足够的 ...

  8. 运算器和控制器在计算机的作用,运算器和控制器功能作用(修改版).ppt

    运算器和控制器功能作用(修改版) 运算器部件: 是计算机加工处理数据的功能部件是 CPU的重要组成部分. 对数据的加工处理包括: 与.或.非.异或等. ALU是运算器中的核心部件.也是运算器内部传送数 ...

  9. 广西计算机一级评分标准,广西普通话水平测试评分细则(机测修改版)及评分表...

    <广西普通话水平测试评分细则(机测修改版)及评分表>由会员分享,可在线阅读,更多相关<广西普通话水平测试评分细则(机测修改版)及评分表(10页珍藏版)>请在人人文库网上搜索. ...

最新文章

  1. (POJ 3026) Borg Maze 最小生成树+bfs
  2. 6 种不同情况下写的代码
  3. java判断一个数是不是质数(素数)
  4. UWP应用程序使用Prism框架构建MVVM
  5. c++ map初始化同时赋值_Golang学习笔记五--map
  6. SAP Spartacus AutoFocus directive的一个例子
  7. 一些常用正则表达式片段的分析
  8. MySQL锁定机制简介
  9. php7.0康乐安装_Windows服务器安装配置PHP7.0环境图文教程
  10. 【感知机/支持向量机】点到平面距离公式的由来
  11. 借助Sigar API获取操作系统信息
  12. 【三维路径规划】基于matlab改进的粒子滤波无人机三维航迹规划【含Matlab源码 1527期】
  13. Js实现input上传图片并显示缩略图
  14. 服务器开着但显示器键盘没反应,电脑开机 键盘灯正常亮,可以控制,显示器却没反应 是怎么回事...
  15. 滑膜间充质干细胞复合壳聚糖水凝胶/角蛋白壳聚糖水凝胶复合材料/壳聚糖/海藻酸纳复合水凝胶的制备
  16. SpringBoot mybatis 实现多级树形菜单
  17. 秃顶和程序员有直接关系?
  18. 【yarn】 yarn的安装和使用
  19. 同事推荐的GIS书籍
  20. ubuntu中的libtool问题

热门文章

  1. 用ASP.NET AJAX框架扩展HTML Map控件
  2. 遭遇sal.xls.exe
  3. 【Leetcode】103. 二叉树的锯齿形层次遍历
  4. Request参数值自动去空格
  5. 类中静态成员变量 无法解析的外部符号
  6. 合肥将全力打造“城市超脑” 创建智慧城市典范
  7. libc++abi.dylib: terminate_handler unexpectedly
  8. 【linux排错】error while loading shared libraries: xxx.so.x 错误的原因和解决办法
  9. CCNP自学之路——eigrp--1
  10. SuSE 10 Enterprise 下 Oracle 10g 关于找不到initorcl.ora文件和控制文件问题