不错文章:http://www.codefans.net/articles/562.shtml

http://www.cnblogs.com/gaobing/p/3878342.html

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

DBHelper数据库操作类(二)的更多相关文章

  1. Android打造属于自己的数据库操作类。

    1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...

  2. PHP 数据库操作类:ezSQL

    EZSQL类介绍: 下载地址:http://www.jb51.net/codes/26393.htmlezsql是一个小型的快速的数据库操作类,可以让你很容易地用PHP操作各种数据库( MySQL.o ...

  3. 我的DbHelper数据操作类

    其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...

  4. php : mysql数据库操作类演示

    设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...

  5. DbHelper数据操作类

    摘要:本文介绍一下DbHelper数据操作类 微软的企业库中有一个非常不错的数据操作类.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过 ...

  6. 我的DbHelper数据操作类(转)

    其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...

  7. PDO数据库操作类

    <?php include 'common_config.php'; /** * Class Mysql * PDO数据库操作类 */ class Mysql { protected stati ...

  8. MySQL数据库操作类(PHP实现,支持连贯操作)

    <?php /** * Author: suvan * CreateTime: 2018/2/27 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数) ...

  9. C#全能数据库操作类及调用示例

    C#全能数据库操作类及调用示例 using System; using System.Data; using System.Data.Common; using System.Configuratio ...

随机推荐

  1. 过虑器 ThreadLocal 权限 监听器 观察者模式

    数据的压缩 GzipOutputStream - > > ByteArrayOutputStream. 以下是在某个servlet中对指定的数据进行压缩 package cn.itcast ...

  2. 手机通过WIFI连上ZXV10 H618B路由器但不能上网问题的解决

    前几天朋友帮忙拿到一个ZXV10 H618B路由器,一看需要12V供电,还好以前留下一个12V输出的DC充电器,关键时刻用上了,先大概下载了此路由器的用户手册,发现原来是08年的产品,都5年了. 开始 ...

  3. git恢复被修改的文件

    恢复到最后一次提交的改动: git checkout -- + 需要恢复的文件名 但是,需要注意的是,如果该文件已经 add 到暂存队列中,上面的命令就不灵光喽 需要先让这个文件取消暂存: git r ...

  4. 20款最优秀的JavaScript编辑器

    毫无疑问SublimeText,Notepad++,webstorm等,是市面上最主导的编辑器,但当然也有一些更多的JavaScript编辑器提供众多的特性和功能,方便和轻松自由的编码.本文整理了20 ...

  5. textview的上下滑动效果

    1.xml文件中 <TextView    …    android:scrollbars="vertical"  ../> 2.java文件中 textview.se ...

  6. HDU 3549 Flow Problem 流问题(最大流,入门)

    题意:给个赤裸的最大流问题. 思路:EK+BFS解决.跟HDU1532几乎一样的. #include <bits/stdc++.h> #define LL long long #defin ...

  7. ↗☻【PHP与MySQL程序设计 #BOOK#】第3章 PHP基础

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...

  8. 设计模式Day01

    一.工厂模式 1.工厂模式的关键点就是如何描述好这两个角色之间的关系,分为四种情况: (1)单一产品系,工厂生产一种类型的产品: (2)多产品系,特征相同.工厂生产多种类型的产品: (3)多产品系,部 ...

  9. Oracle函数面试题

    1.对字符串操作的函数? 答:ASCII() –函数返回字符表达式最左端字符的ASCII 码值 CHR() –函数用于将ASCII 码转换为字符 –如果没有输入0 ~ 255 之间的ASCII 码值C ...

  10. use vagrant under win7

    1.下载安装最新版的vagrant 和 visualbox 到https://vagrantcloud.com/search 搜索要的linux发行版,比如ubuntu 我们用最上面这个版本做测试 拷 ...