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("-", "[-]");
}
} }

  

最新文章

  1. iOS团队风格的统一
  2. JS中判断鼠标按键的问题
  3. oracle中trim,ltrim,rtrim函数用法
  4. Swift 06.Closures
  5. 原生js tab 栏切换
  6. JSON Object(如NSDictionary,NSArray)转化为JSON格式的NSString #iOS开发
  7. 多线程中的synchronized
  8. 用自己的机器人和ubuntu PC实现通信和控制--26
  9. Linux 配置 vimrc
  10. 【POJ】【1160】Post Office
  11. 如何使用git创建远程仓库(供局域网多人使用)
  12. OpenJudge 2817:木棒 / Poj 1011 Sticks
  13. Sevlet局部变量初始化
  14. SAX,DOM,JAXP,JDOM,DOM4J比较
  15. 43. leetcode 459. Repeated Substring Pattern
  16. Spring(一)
  17. css实现文本两端对齐
  18. android上instant app介绍 类似于微信小程序
  19. POJ3259(Wormholes) 判断负环
  20. 自定django登录跳转限制

热门文章

  1. python简单实用gunicorn部署
  2. django+xadmin在线教育平台(二)
  3. C语言:自己编写的简易ftp客户端,包含(列表,进入目录,上传文件,下载文件,删除文件)功能
  4. linux正则表达式企业级深度实践案例1
  5. JavaScript对象创建的九种方式
  6. 模块numpy的用法
  7. L1-049 天梯赛座位分配 (20 分)
  8. tomcat8+idea远程调试
  9. complex类的定义、实现
  10. Django基于Pycharm开发之四[关于静态文件的使用,配置以及源码分析](原创)