using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;
using System.Reflection;
using System.Collections;
namespace DataHelp
{
#region ADO.NET 访问数据库辅助类 +SqlHelp
//Author:兵兵 +SqlHelp
public class SqlHelp
{
/// <summary>
/// DB连接字符串
/// </summary>
public static readonly string DB= ConfigurationManager.ConnectionStrings["DB"].ConnectionString; #region ExecuteDataReader +ExecuteDataReader(string cmdText, List<SqlParameter> parameters,string connString)
/// <summary>
/// ExecuteDataReader(执行有参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="parameters">参数列表</param>
/// <param name="connString">连接字符串</param>
/// <returns>SqlDataReader对象</returns>
public static SqlDataReader ExecuteDataReader(string cmdText, List<SqlParameter> parameters, string connString)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn, parameters);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return reader; }
#endregion #region ExecuteDataReader +ExecuteDataReader(string cmdText,string connString)
/// <summary>
/// ExecuteDataReader(执行无参存储过程)
/// </summary>
/// <param name="cmdText">存储过程</param>
/// <param name="connString">连接字符串</param>
/// <returns>SqlDataReader对象</returns>
public static SqlDataReader ExecuteDataReader(string cmdText, string connString)
{ SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn);
SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return reader; }
#endregion #region ExecuteNonQuery +ExecuteNonQuery(string cmdText, List<SqlParameter> parameters, string connString)
/// <summary>
/// ExecuteNonQuery(执行有参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="parameters">参数列表</param>
/// <param name="connString">连接字符串</param>
/// <returns>数据库受影响的行数</returns>
public static int ExecuteNonQuery(string cmdText, List<SqlParameter> parameters, string connString)
{
using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn, parameters);
int result = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return result;
}
}
#endregion #region ExecuteNonQuery +ExecuteNonQuery(string cmdText, string connString)
/// <summary>
/// ExecuteNonQuery(执行无参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="connString">连接字符串</param>
/// <returns>数据库受影响的行数</returns>
public static int ExecuteNonQuery(string cmdText, string connString)
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn);
int result = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return result;
} }
#endregion #region ExecuteScalar +ExecuteScalar(string cmdText, List<SqlParameter> parameters, string connString)
/// <summary>
/// ExecuteScalar(执行有参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="parameters">参数列表</param>
/// <param name="connString">连接字符串</param>
/// <returns>object</returns>
public static object ExecuteScalar(string cmdText, List<SqlParameter> parameters, string connString)
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn, parameters);
object o = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return o;
} }
#endregion #region ExecuteScalar +ExecuteScalar(string cmdText, string connString)
/// <summary>
/// ExecuteScalar(执行无参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="connString">连接字符串</param>
/// <returns>object</returns>
public static object ExecuteScalar(string cmdText, string connString)
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn);
object o = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return o;
} }
#endregion #region ExecuteDataTable +ExecuteDataTable(string cmdText, List<SqlParameter> parameters, string connString)
/// <summary>
/// ExecuteDataTable(用适配器执行有参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="parameters">参数列表</param>
/// <param name="connString">连接字符串</param>
/// <returns>DataTable</returns>
public static DataTable ExecuteDataTable(string cmdText, List<SqlParameter> parameters, string connString)
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
//命令类型为存储过程
da.DeleteCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddRange(parameters.ToArray());
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
} }
#endregion #region ExecuteDataTable +ExecuteDataTable(string cmdText, string connString)
/// <summary>
/// ExecuteDataTable(用适配器执行无参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="connString">连接字符串</param>
/// <returns>DataTable</returns>
public static DataTable ExecuteDataTable(string cmdText, string connString)
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlDataAdapter da = new SqlDataAdapter(cmdText, conn);
//命令类型为存储过程
da.DeleteCommand.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
da.Fill(dt);
return dt;
}
}
#endregion #region ExecuteDataTableProc(命令+适配器) +ExecuteDataTableProc(string cmdText, List<SqlParameter> parameters, string connString)
/// <summary>
/// ExecuteDataTableProc(执行有参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="parameters">参数列表</param>
/// <param name="connString">连接字符串</param>
/// <returns>DataTable</returns>
public static DataTable ExecuteDataTableProc(string cmdText, List<SqlParameter> parameters, string connString)
/// <summary>
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn, parameters);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
cmd.Parameters.Clear();
return dt; } }
#endregion #region ExecuteDataTableProc(命令+适配器) +ExecuteDataTableProc(string cmdText, string connString)
/// <summary>
/// ExecuteDataTableProc(执行无参存储过程)
/// </summary>
/// <param name="parameters">参数列表</param>
/// <param name="connString">连接字符串</param>
/// <returns>DataTable</returns>
public static DataTable ExecuteDataTableProc(string cmdText, string connString)
{ using (SqlConnection conn = new SqlConnection(connString))
{
SqlCommand cmd = new SqlCommand();
CommandBuilder(cmdText, cmd, conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
adapter.Fill(dt);
cmd.Parameters.Clear();
return dt; } }
#endregion #region 准备命令对象 -CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn, List<SqlParameter> parameters)
/// <summary>
/// 准备命令对象(执行有参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="cmd">命令对象</param>
/// <param name="conn">连接对象</param>
/// <param name="parameters">参数列表</param>
private static void CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn, List<SqlParameter> parameters)
{ if (conn.State == System.Data.ConnectionState.Closed)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = System.Data.CommandType.StoredProcedure;
if (parameters.Count > )
cmd.Parameters.AddRange(parameters.ToArray()); }
#endregion #region 准备命令对象 -CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn)
/// <summary>
/// 准备命令对象(执行无参存储过程)
/// </summary>
/// <param name="cmdText">存储过程名称</param>
/// <param name="cmd">命令对象</param>
/// <param name="conn">连接对象</param>
private static void CommandBuilder(string cmdText, SqlCommand cmd, SqlConnection conn)
{ if (conn.State == System.Data.ConnectionState.Closed)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
cmd.CommandType = System.Data.CommandType.StoredProcedure; }
#endregion #region 批插入 void BulkInsert( DataTable dt, string tableName, string connStr)
/// <summary>
/// 批插入 void BulkInsert( DataTable dt, string tableName, string connStr)
/// </summary>
/// <param name="dt">所有数据的表格</param>
/// <param name="tableName">表名</param>
public static int BulkInsert(DataTable dt, string tableName, string connStr)
{
int result = -;
if (string.IsNullOrEmpty(tableName))
throw new Exception("请指定你要插入的表名");
var count = dt.Rows.Count;
if (count == )
return result;
SqlTransaction sqlBulkTran = null;
try
{
using (SqlConnection conn = new SqlConnection(connStr))
{
if (conn.State == System.Data.ConnectionState.Closed)
conn.Open();
sqlBulkTran = conn.BeginTransaction();
using (SqlBulkCopy copy = new SqlBulkCopy(conn, SqlBulkCopyOptions.CheckConstraints, sqlBulkTran))
{
copy.DestinationTableName = tableName;//指定目标表
copy.WriteToServer(dt);//将dt中的所有行复制到SqlBulkCopy对象的DestinationTableName指定的目标表中
if (sqlBulkTran != null)
{
sqlBulkTran.Commit();
}
result = ;
} } }
catch (Exception)
{
if (sqlBulkTran != null)
{
sqlBulkTran.Rollback();
}
}
finally
{
sqlBulkTran = null;
} return result;
}
#endregion }
#endregion
}
#region list 扩展方法 Author:高兵兵
public static class IListUtil
{
/// <summary>
/// 将集合类转换成DataTable
/// </summary>
/// <param name="list">集合</param>
/// <returns></returns>
public static DataTable AsDataTable<T>(this IList<T> list)
{
DataTable result = new DataTable();
if (list.Count > )
{
PropertyInfo[] propertys = typeof(T).GetProperties();
foreach (PropertyInfo pi in propertys)
{
result.Columns.Add(pi.Name, pi.PropertyType);
} for (int i = ; i < list.Count; i++)
{
ArrayList tempList = new ArrayList();
foreach (var item in propertys)
{
object obj = item.GetValue(list[i], null);
tempList.Add(obj);
} object[] array = tempList.ToArray();
result.LoadDataRow(array, true);
}
}
return result;
} }
#endregion

自定义 SqlHelp的更多相关文章

  1. 关于Unity3D自定义编辑器的学习

    被人物编辑器折腾了一个月,最终还是交了点成品上去(还要很多优化都还么做).  刚接手这项工作时觉得没概念,没想法,不知道.后来就去看<<Unity5.X从入门到精通>>中有关于 ...

  2. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  3. JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome

    今天为大家分享一下我自己制作的浏览器滚动条,我们知道用css来自定义滚动条也是挺好的方式,css虽然能够改变chrome浏览器的滚动条样式可以自定义,css也能够改变IE浏览器滚动条的颜色.但是css ...

  4. ASP.NET Aries 入门开发教程8:树型列表及自定义右键菜单

    前言: 前面几篇重点都在讲普通列表的相关操作. 本篇主要讲树型列表的操作. 框架在设计时,已经把树型列表和普通列表全面统一了操作,用法几乎是一致的. 下面介绍一些差距化的内容: 1:树型列表绑定: v ...

  5. ASP.NET Aries 入门开发教程5:自定义列表页工具栏区

    前言: 抓紧时间,继续写教程,因为发现用户期待的内容,都在业务处理那一块. 不得不继续勤劳了. 这节主要介绍工具栏区的玩法. 工具栏的默认介绍: 工具栏默认包括5个按钮,根据不同的权限决定显示: 添加 ...

  6. UWP中实现自定义标题栏

    UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...

  7. JavaScript 自定义对象

    在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...

  8. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  9. 自定义Inspector检视面板

    Unity中的Inspector面板可以显示的属性包括以下两类:(1)C#以及Unity提供的基础类型:(2)自定义类型,并使用[System.Serializable]关键字序列化,比如: [Sys ...

随机推荐

  1. JS案例之6——瀑布流布局(1)

    在实际的项目中,偶尔会用到一种布局——瀑布流布局.瀑布流布局的特点是,在多列布局时,可以保证内容区块在水平方向上不产生大的空隙,类似瀑布的效果.简单的说,在垂直列表里,内容区块是一个挨着一个的.当内容 ...

  2. WPF打印原理,自定义打印

    一.基础知识 1.System.Printing命名空间 我们可以先看一下System.Printing命名空间,东西其实很多,功能也非常强大,可以说能够控制打印的每一个细节,曾经对PrintDial ...

  3. 【JVM】模板解释器--如何根据字节码生成汇编码?

    1.背景 仅针对JVM的模板解释器: 如何根据opcode和寻址模式,将bytecode生成汇编码. 本文的示例中所使用的字节码和汇编码,请参见上篇博文:按值传递还是按引用? 2.寻址模式 本文不打算 ...

  4. 分享一个JavaScript嗅探工具Tracker

    今天发现一个好用的JS侦测工具,实时监测JS代码的使用效率,运行状态等. 期待插件作者添加更好的功能. 运行效果 运行效果如下(我把它放到标签里了): 1.点击Tracker书签工具 2.选择查看选项 ...

  5. linux上svn版本库创建小记

    [新建svn仓库] 先创建一个文件夹mkdir /opt/svn/wechat;   然后创建svn版本库    svnadmin create /opt/svn/wechat;   [创建用户组权限 ...

  6. 支持Json进行操作的Javascript类库TAFFY DB

    前段时间工作中用到Json数据,希望将一些简单的增删改查放到客户端来做,这样也能减少服务器端的压力.分别查找了几个可以对Json进行操作的javascript 类库,最终选定了TAFFY DB.原因如 ...

  7. redis学习笔记——(2)

    4.Redis中的string类型 String类型是最简单的类型,一个Key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对 ...

  8. Javascript基础系列之(八)Javascript的调试与优化

    Javascript的错误主要是语法错误和运行时的错误,前者在代码解析时就会出错,影响程序的运行.后者称为异常,影响它所运行的线程.下面就Javascript常见错误进行分析 1.常见的错误和异常 i ...

  9. ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2、linux 如何修改只读文件 3、ubuntu安装

    1.ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 答案:需要超级用户权限 sudo 2.linux 如何修改只读文件 答案:可以使用chmod命令,为改文件提供其他的权限.u ...

  10. python 2.7的安装

    最近准备入手学习python 这里我是按照:http://blog.csdn.net/jcjc918/article/details/11022345 来的 我在安装python 3 的时候发现上下左 ...