namespace ConsoleApplication2
{
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration; public class SqlHelper
{
/// <summary>
/// 连接字符串
/// </summary>ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString;
/// <summary>
/// 准备Command对象
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
private static SqlCommand PrepareCommand(string sql, params SqlParameter[] spms)
{
SqlConnection conn = new SqlConnection(strConn);
SqlCommand cmd = new SqlCommand(sql, conn);
if (spms != null)
cmd.Parameters.AddRange(spms);
return cmd;
}
/// <summary>
/// 提交sql语句执行(增删改)
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns>影响行数</returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] spms)
{
int result = 0;
SqlCommand cmd = PrepareCommand(sql, spms);
try
{
cmd.Connection.Open();
result = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
throw new Exception(ex.Message);
}
finally
{
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
}
return result;
}
/// <summary>
/// 提交sql语句返回首行首列的值
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql, params SqlParameter[] spms)
{
object result = null;
SqlCommand cmd = PrepareCommand(sql, spms);
try
{
cmd.Connection.Open();
result = cmd.ExecuteScalar();
}
catch (Exception ex)
{
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
throw new Exception(ex.Message);
}
finally
{
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
}
return result;
}
/// <summary>
/// 提交sql语句执行(增删改),bayistuta新增,2011/03/21 17:13
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns>影响行数</returns>
public static int ExecuteNonQuery(string sql, CommandType type, params SqlParameter[] spms)
{
int result = 0;
SqlCommand cmd = PrepareCommand(sql, spms);
cmd.CommandType = type;
try
{
cmd.Connection.Open();
result = cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
throw new Exception(ex.Message);
}
finally
{
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
}
return result;
}
/// <summary>
/// 提交sql语句返回读取器,bayistuta新增,2011/03/25 21:26
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string sql, CommandType type, params SqlParameter[] spms)
{
SqlDataReader reader = null;
SqlCommand cmd = PrepareCommand(sql, spms);
cmd.CommandType = type;
try
{
cmd.Connection.Open();
//关闭reader对象,其对应的连接对象自动关闭
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
if (reader != null)
reader.Close();
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
throw new Exception(ex.Message);
}
return reader;
}
/// <summary>
/// 提交sql语句返回读取器
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] spms)
{
SqlDataReader reader = null;
SqlCommand cmd = PrepareCommand(sql, spms);
try
{
cmd.Connection.Open();
//关闭reader对象,其对应的连接对象自动关闭
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
if (reader != null)
reader.Close();
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
throw new Exception(ex.Message);
}
return reader;
}
/// <summary>
/// 查询实体类对象集合
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
public static List<T> GetList<T>(string sql, params SqlParameter[] spms)
{
List<T> list = new List<T>();
SqlDataReader reader = ExecuteReader(sql, spms);
while (reader.Read())
{
T t = CreateInstance<T>(reader);
list.Add(t);
}
reader.Close();
return list;
}
/// <summary>
/// 查询单个实体类对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
public static T GetSingle<T>(string sql, params SqlParameter[] spms)
{
T t = default(T);
SqlDataReader reader = ExecuteReader(sql, spms);
if (reader.Read())
{
t = CreateInstance<T>(reader);
}
reader.Close();
return t;
} /// <summary>
/// 返回DataTable
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="spms">参数</param>
/// <returns></returns>
public static DataTable GetDataTable(string sql, params SqlParameter[] spms)
{
SqlCommand cmd = PrepareCommand(sql, spms); SqlDataAdapter da = new SqlDataAdapter(cmd); //创建DataAdapter数据适配器实例
DataSet ds = new DataSet();//创建DataSet实例
da.Fill(ds, "tables");//使用DataAdapter的Fill方法(填充),调用SELECT命令
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
return ds.Tables[0];
}
/// <summary>
/// 返回DataTable
/// </summary>
/// <param name="sql">sql语句</param>
/// <param name="spms">参数</param>
/// <returns></returns>
public static DataTable GetDataTable(string sql, CommandType cmdType, params SqlParameter[] spms)
{
SqlCommand cmd = PrepareCommand(sql, spms);
cmd.CommandType = cmdType;
SqlDataAdapter da = new SqlDataAdapter(cmd); //创建DataAdapter数据适配器实例
DataSet ds = new DataSet();//创建DataSet实例
da.Fill(ds, "tables");//使用DataAdapter的Fill方法(填充),调用SELECT命令
if (cmd.Connection.State != ConnectionState.Closed)
cmd.Connection.Close();
return ds.Tables[0];
}
/// <summary>
/// 查询记录条数
/// </summary>
/// <param name="sql"></param>
/// <param name="spms"></param>
/// <returns></returns>
public static int GetCount(string sql, params SqlParameter[] spms)
{
return (int)ExecuteScalar(sql, spms);
}
/// <summary>
/// 使用反射根据实体类的构造函数创建实例
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="reader"></param>
/// <returns></returns>
private static T CreateInstance<T>(IDataReader reader)
{
Type type = typeof(T);
T t = (T)Activator.CreateInstance(type, reader);
return t;
} /// <summary>
/// 防sql注入,替换字符串
/// </summary>
/// <param name="val">需要替换的值</param>
/// <returns>替换后的值</returns>
public static string GetParameterValue(string val)
{
return val.Replace("'", "''").Replace("-", "[-]");
}
} }

  

one pragmatical sqlhelper的更多相关文章

  1. 不该活着的SqlHelper和DBHelper

    前言: 还记得刚学ADO.NET的情景么? 还记得当年是怎么从ADO.NET被忽悠到用SqlHelper的么? 话说从入门到走上工作岗位那些年,我们就一直被纯纯地教导或引导,ADO.NET太原始,得封 ...

  2. SqlHelper中IN集合场景下的参数处理

    我手头有个古老的项目,持久层用的是古老的ADO.net.前两天去昆明旅游,其中的一个景点是云南民族村,通过导游介绍知道了一个古老的民族——基诺族,“基”在这个族内代表舅舅,“基诺”意为“跟在舅舅后边” ...

  3. 支持多返回值存储过程的SqlHelper

    public readonly string connStr = ConfigurationManager.ConnectionStrings["sql"].ConnectionS ...

  4. 微软版的SqlHelper.cs类

    一,微软SQLHelper.cs类 中文版: using System; using System.Data; using System.Xml; using System.Data.SqlClien ...

  5. 万能的SqlHelper,麻麻再也不用担心用什么数据库了

    以前只用一种数据库,倒也无所谓,但是再数据库切换的时候,发现代码差不多呀. 最初,两种数据库,大不了写两个SqlHelper,但是多了也就发现代码重用率太低了吧. 因此,下面的SqlHelper诞生了 ...

  6. sqlHelper做增删改查,SQL注入处理,存储值,cookie,session

    一.存储值 eg:登录一个页面,在进入这个页面之前你怎么知道它登没登录呢?[在登录成功之后我们把状态保存起来] 存储值得方式有两种,一种是cookie,一种是session 1.1区别: 代码: if ...

  7. sqlHelper做增删改查

    1.把数据库里面的数据显示出来 sqlHelper怎么用:[网上可以下载,需要可以找楼主要] 1.拷贝到项目,修改它的命名空间等于当前项目名称 2.数据库的连接信息,用户名,密码,登录方式等 < ...

  8. SqlHelper类

    using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...

  9. .net C# SqlHelper for Oracle

    适用于Oracle的sqlhelper 需要使用ODP.Net,引用Oracle.DataAccess.dll 推荐安装ODAC 代码如下: using System; using System.Co ...

随机推荐

  1. Python基础-Python注释

    一.什么是注释.特性 1.一段文字性的描述,通过注释,可以解释和明确Python代码的功能,并记录将来要修改的地方. 2.当程序处理时,Python解释器会自动忽略,不会被当做代码进行处理 二.注释的 ...

  2. Docker学习笔记--2 镜像的创建

    如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等应用服务环境,有下面三种方法: 1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容 ...

  3. centos7中使用LVM管理磁盘和挂载磁盘

    centos7使用LVM管理一块新的磁盘 注意!文中凡是带#的都是命令标志. 一些重要概念: LV(Logical Volume)- 逻辑卷, VG(Volumne Group)- 卷组, PV(Ph ...

  4. 如何禁止用户连续点击一个按钮事件详细JS

    <input type="button" id="submit" value="提交"> <script> $(do ...

  5. 宏基笔记本升级bios(2012-12-28-bd 写的日志迁移

    首先到宏基官网下载中心 去下载你需要的新版本的bios安装包如图: 我的是宏基4750g的win7旗舰版64位,这里一定要根据自己的电脑的型号和安装的系统来选择,你可以选择最新的版本也可以选择老的版本 ...

  6. 服务器常说的U是什么意思?

    U是英文单词:unit 所说的1U和2U,是服务器的厚度,1U大概是相当于机柜的两个小格子,2U是四个格子.1U大概是4.45厘米(1U=1.75英寸,1英寸=2.54CM).以下这个是图片:

  7. libevent源码分析1 ----evnet相关结构体分析

    位于代码event-internal.h中. event_base类似事件的集合,你创建一个事件,必须将该事件指定一个集合. struct event_base { 50     const stru ...

  8. 4 Template层- HTML转义

    1.HTML转义 Django对字符串进行自动HTML转义,如在模板中输出如下值: 视图代码: def index(request): return render(request, 'temtest/ ...

  9. 转行自学 Java 之路的纪念册

    前言: 最近在重读<小狗钱钱>,我对其中的"成功日记"概念特别深刻,偶尔也会记一记“成功日记”. 想了想人生走找到今天,阶段性“成功日记”有没有呢? 有的!几年前的一篇 ...

  10. PyInstaller打包python脚本

    用python写的工具写好了,想打包然后发给测试同事使用,最后选择了PyInstaller,支持Windows.Linux.OS X,支持打包成一个文件夹或单个EXE文件.   我是直接在线安装的,在 ...