DBHelper数据库操作类(二)
不错文章: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数据库操作类(二)的更多相关文章
- Android打造属于自己的数据库操作类。
1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
- PHP 数据库操作类:ezSQL
EZSQL类介绍: 下载地址:http://www.jb51.net/codes/26393.htmlezsql是一个小型的快速的数据库操作类,可以让你很容易地用PHP操作各种数据库( MySQL.o ...
- 我的DbHelper数据操作类
其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- DbHelper数据操作类
摘要:本文介绍一下DbHelper数据操作类 微软的企业库中有一个非常不错的数据操作类.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过 ...
- 我的DbHelper数据操作类(转)
其实,微软的企业库中有一个非常不错的数据操作类了.但是,不少公司(起码我遇到的几个...),对一些"封装"了些什么的东西不太敢用,虽然我推荐过微软的企业库框架了...但是还是要&q ...
- PDO数据库操作类
<?php include 'common_config.php'; /** * Class Mysql * PDO数据库操作类 */ class Mysql { protected stati ...
- MySQL数据库操作类(PHP实现,支持连贯操作)
<?php /** * Author: suvan * CreateTime: 2018/2/27 * description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数) ...
- C#全能数据库操作类及调用示例
C#全能数据库操作类及调用示例 using System; using System.Data; using System.Data.Common; using System.Configuratio ...
随机推荐
- linux系统灵活运用灯[android课程3]
1,文件如何生成: ----- ---- (二),把hello例子贴过来后,编译问题: 在编译Android 4.0驱动的时候,使用到了proc_dir_entry结构体中的owner成员,但是编译的 ...
- Ubuntu12.04安装JDK6
因为我们要搭建Android2.3的开发环境,只需要安装JDK6就可以,下面是其下载地址: http://www.oracle.com/technetwork/java/javase/download ...
- ASP.NET中的FileUpload文件上传控件的使用
本篇文章教大家如何将客户端的图片或者文件上传到服务器: 无论是上传图片(.jpg .png .gif等等) 文档(word excel ppt 等等). 第一步:放入以下三个控件 Image控件,Fi ...
- apache开源项目--Sirona
Apache Sirona 为 Java 应用程序提供了一个简单但可扩展的监控解决方案. apache / sirona
- Android 隐藏RadoiButton左边按钮
声明方式 添加属性 android:button=“@null”? 代码方式 radioBtn.setButtonDrawable(new StateListDrawable());
- Jquery Table 的基本操作
Jquery 操作 Html Table 是很方便的,这里对表格的基本操作进行一下简单的总结. 首先建立一个通用的表格css 和一个 表格Table: table { border-collapse: ...
- Android 删除短信
1.删除短信的函数,一条一条的删除所有短信 /* * Delete all SMS one by one */ public void deleteSMS() { try { ContentResol ...
- poj 3279 Fliptile
题意:一个n * m的棋盘,0或1,每次改变一个格子时同时改变上下左右的格子,问用最少次数将棋盘全变成0的策略. 题解:用二进制压缩第一行更改的状态,之后遍历棋盘,如果当前格子为1则改变下方的格子,记 ...
- (Java)《head first java》值得Java或面向对象基础的新手看。
看完这本书后本人收获良多. 内容对Java以及面向对象的入门者非常友好. 抽象的内容惯用图解的方法来剖析,通俗易懂 之前看C#入门经典的面向对象时,依然浓浓的一头雾水. (1)很不解为何实例化要写成A ...
- Hbase 建表基本命令总结
访问hbase,以及操作hbase,命令不用使用分号 hbase shell 进入hbase list 查看表 hbase shell -d hbase(main):024:0> scan '. ...