using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data.OracleClient;
using System.Diagnostics;
using System.Configuration;
using System.Collections; namespace ManagerMent.DbHelper
{
public class DbHelper
{
#region 数据库连接字段(web.config来配置)
public string ConnectString { get; set; }
public string ConnectStringSql { get; set; }
public string ConnectStringOrl { get; set; } public DbHelper()
{
ConnectString = ConfigurationManager.AppSettings["ConnectionString"];
ConnectStringSql = ConfigurationManager.AppSettings["ConnectionSql"];
ConnectStringOrl = ConfigurationManager.AppSettings["ConnectStringOrl"]; }
#endregion #region 创建Connection
private IDbConnection GetConnection(string DbType)
{
switch (DbType)
{
case "SqlServer":
return new SqlConnection(ConnectStringSql);
case "Oracle":
return new OracleConnection(ConnectStringOrl);
case "Access":
return new OleDbConnection(ConnectString);
default:
return new SqlConnection(ConnectStringSql);
}
}
#endregion #region 创建Command
private IDbCommand GetCommand(string DbType, string sql, IDbConnection iConn)
{
switch (DbType)
{
case "SqlServer":
return new SqlCommand(sql, (SqlConnection)iConn);
case "Oracle":
return new OracleCommand(sql, (OracleConnection)iConn);
case "Access":
return new OleDbCommand(sql, (OleDbConnection)iConn);
default:
return new SqlCommand(sql, (SqlConnection)iConn);
}
}
private IDbCommand GetCommand(string DbType)
{
switch (DbType)
{
case "SqlServer":
return new SqlCommand();
case "Oracle":
return new OracleCommand();
case "Access":
return new OleDbCommand();
default:
return new SqlCommand();
}
}
#endregion #region 创建Adapter
private IDataAdapter GetAdapter(string DbType, string sql, IDbConnection iConn)
{
switch (DbType)
{
case "SqlServer":
return new SqlDataAdapter(sql, (SqlConnection)iConn);
case "Oracle":
return new OracleDataAdapter(sql, (OracleConnection)iConn);
case "Access":
return new OleDbDataAdapter(sql, (OleDbConnection)iConn);
default:
return new SqlDataAdapter(sql, (SqlConnection)iConn);
}
}
private IDataAdapter GetAdapter(string DbType, IDbCommand iCmd)
{
switch (DbType)
{
case "SqlServer":
return new SqlDataAdapter((SqlCommand)iCmd);
case "Oracle":
return new OracleDataAdapter((OracleCommand)iCmd);
case "Access":
return new OleDbDataAdapter((OleDbCommand)iCmd);
default:
return new SqlDataAdapter((SqlCommand)iCmd);
}
}
#endregion #region 执行数据库表操作
public IDataReader ExecuteReader(string DbType, string SqlString)
{
IDbConnection iConn = GetConnection(DbType);
{
iConn.Open();
IDbCommand iCmd = GetCommand(DbType);
{
try
{
PrepareCommand(DbType, out iCmd, iConn, null, SqlString, null);
IDataReader iReader = iCmd.ExecuteReader();
return iReader;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
iCmd.Dispose(); }
}
} } private void PrepareCommand(string DbType, out IDbCommand iCmd, IDbConnection iConn, IDbTransaction iTrans, string cmdText, IDataParameter[] iParms)
{
if (iConn.State != ConnectionState.Open)
{
iConn.Open();
}
iCmd = GetCommand(DbType);
iCmd.Connection = iConn;
iCmd.CommandText = cmdText;
if (iTrans != null)
{
iCmd.Transaction = iTrans;
}
iCmd.CommandType = CommandType.Text; //cmdType
if (iParms != null)
{
foreach (IDataParameter parm in iParms)
{
iCmd.Parameters.Add(parm);
}
} } //执行查询语句,返回DataSet,重点用于Oracle数据库
public DataSet Query(string DbType, string SqlString)
{
using (IDbConnection iConn = GetConnection(DbType))
{
DataSet Ds = new DataSet();
iConn.Open();
try
{
IDataAdapter iAdapter = GetAdapter(DbType, SqlString, iConn);
iAdapter.Fill(Ds);
return Ds;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (iConn.State != ConnectionState.Closed)
{
iConn.Close();
}
}
}
} //执行查询语句,返回DataTable,重点用于Oracle数据库
public DataTable ExcuteQuery(string DbType, string SqlString)
{
using (IDbConnection iConn = GetConnection(DbType))
{
DataSet Ds = new DataSet();
iConn.Open();
try
{
IDataAdapter iAdapter = GetAdapter(DbType, SqlString, iConn);
iAdapter.Fill(Ds);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (iConn.State != ConnectionState.Closed)
{
iConn.Close();
}
}
return Ds.Tables[];
}
} //执行数据库表操作,重点用于SqlServer数据库
public void ExcuteSqlScalar(string DbType, string SqlString)
{
using (IDbConnection iConn = GetConnection(DbType))
{
using (IDbCommand iCmd = GetCommand(DbType, SqlString, iConn))
{
iConn.Open();
iCmd.ExecuteNonQuery();
}
}
} public int ExcuteSqlNum(string DbType, string SqlString)
{
using (IDbConnection iConn = GetConnection(DbType))
{
using (IDbCommand iCmd = GetCommand(DbType, SqlString, iConn))
{
iConn.Open();
int i = (int)iCmd.ExecuteScalar();
return i;
}
}
} public bool ExcuteSql(string DbType, string SqlString)
{
using (IDbConnection iConn = GetConnection(DbType))
{
using (IDbCommand iCmd = GetCommand(DbType, SqlString, iConn))
{
iConn.Open();
try
{
int Rows = (int)iCmd.ExecuteScalar();
return false;
}
catch (Exception ex)
{
return true;
}
finally
{
if (iConn.State != ConnectionState.Closed)
{
iConn.Close();
}
}
} }
} //删除数据
public void DeleGet(string DbType, string SqlString)
{
using (IDbConnection iConn = GetConnection(DbType))
{
using (IDbCommand iCmd = GetCommand(DbType, SqlString, iConn))
{
iConn.Open();
iCmd.ExecuteNonQuery();
}
}
}
#endregion #region 执行多条SQL语句,实现数据库事物
/// <summary>
///
/// </summary>
/// <param name="DbType"></param>
/// <param name="SqlStringList">多条SQL语句</param>
/// <returns></returns>
public bool ExcuteSqlTran(string DbType, ArrayList SqlStringList)
{
using (IDbConnection iConn = GetConnection(DbType))
{
iConn.Open();
using (IDbCommand iCmd = GetCommand(DbType))
{
iCmd.Connection = iConn;
using (IDbTransaction iDbTran = iConn.BeginTransaction())
{
iCmd.Transaction = iDbTran;
try
{
for (int n = ; n < SqlStringList.Count; n++)
{
string StrSql = SqlStringList[n].ToString();
if (StrSql.Trim().Length > )
{
iCmd.CommandText = StrSql;
iCmd.ExecuteNonQuery();
}
}
iDbTran.Commit();
}
catch (Exception ex)
{
Debug.WriteLine("ExcuteSqlTran" + ex.Message);
iDbTran.Rollback();
return false;
}
finally
{
if (iConn.State != ConnectionState.Closed)
{
iConn.Close();
}
}
}
}
return true;
}
} #endregion #region SQL数据库解析格式
private IDbDataParameter DbPara(string DbType, string ParaName, string DataType)
{
switch (DbType)
{
case "SqlServer":
return GetSqlPara(ParaName, DataType);
case "Oracle":
return GetOraclePara(ParaName, DbType);
case "Access":
return GetOledbPara(ParaName, DbType);
default:
return GetSqlPara(ParaName, DbType);
}
} private IDbDataParameter GetSqlPara(string ParaName, string DataType)
{
switch (DataType)
{
case "Decimal":
return new SqlParameter(ParaName, SqlDbType.Decimal);
case "VarChar":
return new SqlParameter(ParaName, SqlDbType.VarChar);
case "DateTime":
return new SqlParameter(ParaName, SqlDbType.DateTime);
case "Image":
return new SqlParameter(ParaName, SqlDbType.Image);
case "Int":
return new SqlParameter(ParaName, SqlDbType.Int);
case "Text":
return new SqlParameter(ParaName, SqlDbType.Text);
default:
return new SqlParameter(ParaName, SqlDbType.VarChar);
}
} //Oracle数据库解析数据格式
private IDbDataParameter GetOraclePara(string ParaName, string DbType)
{
switch (DbType)
{
case "Decimal":
return new OracleParameter(ParaName, SqlDbType.Decimal);
case "VarChar":
return new OracleParameter(ParaName, SqlDbType.VarChar);
case "DateTime":
return new OracleParameter(ParaName, SqlDbType.DateTime);
case "Image":
return new OracleParameter(ParaName, SqlDbType.Image);
case "Int":
return new OracleParameter(ParaName, SqlDbType.Int);
case "Text":
return new OracleParameter(ParaName, SqlDbType.Text);
default:
return new OracleParameter(ParaName, SqlDbType.VarChar);
}
} //Access(OLEDB)数据库数据解析格式
private IDbDataParameter GetOledbPara(string ParaName, string DbType)
{
switch (DbType)
{
case "Decimal":
return new OleDbParameter(ParaName, SqlDbType.Decimal);
case "VarChar":
return new OleDbParameter(ParaName, SqlDbType.VarChar);
case "DateTime":
return new OleDbParameter(ParaName, SqlDbType.DateTime);
case "Image":
return new OleDbParameter(ParaName, SqlDbType.Image);
case "Int":
return new OleDbParameter(ParaName, SqlDbType.Int);
case "Text":
return new OleDbParameter(ParaName, SqlDbType.Text);
default:
return new OleDbParameter(ParaName, SqlDbType.VarChar);
}
} #endregion #region 执行存储过程
public DataSet RunProcedure(string DbType, string StoreProcName, IDataParameter[] Parameters, DataSet dataSet, string TableName)
{
using (IDbConnection iConn = GetConnection(DbType))
{
iConn.Open();
IDataAdapter iDa = GetAdapter1(DbType, BuildQueryCommand(DbType, iConn, StoreProcName, Parameters));
((SqlDataAdapter)iDa).Fill(dataSet, TableName);
if(iConn.State!=ConnectionState.Closed)
{
iConn.Close();
}
return dataSet;
}
} private IDbCommand BuildQueryCommand(string dbType, IDbConnection iConn, string storeProcName, IDataParameter[] parameters)
{
IDbCommand iCmd = GetCommand(dbType,storeProcName,iConn);
iCmd.CommandType = CommandType.StoredProcedure;
if(parameters==null)
{
return iCmd;
}
foreach(IDataParameter parameter in parameters)
{
iCmd.Parameters.Add(parameter);
}
return iCmd;
} private IDataAdapter GetAdapter1(string DbType, IDbCommand iCmd)
{
switch(DbType)
{
case "SqlServer":
return new SqlDataAdapter((SqlCommand)iCmd);
case "Oracle":
return new OracleDataAdapter((OracleCommand)iCmd);
case "Oledb":
return new OleDbDataAdapter((OleDbCommand)iCmd);
default:
return new SqlDataAdapter((SqlCommand)iCmd);
}
} /// <summary>
/// 执行存储过程
/// </summary>
/// <param name="DbType"></param>
/// <param name="storeProcName"></param>
/// <param name="parameters"></param>
/// <param name="TableName"></param>
/// <returns></returns>
public DataSet RunProcedure(string DbType,string storeProcName,IDbDataParameter[] parameters,string TableName)
{
using (IDbConnection iConn=GetConnection(DbType))
{
DataSet Ds = new DataSet();
iConn.Open();
IDataAdapter iDa = GetAdapter(DbType,BuildQueryCommand(DbType,iConn,storeProcName,parameters));
((SqlDataAdapter)iDa).Fill(Ds,TableName);
if(iConn.State!=ConnectionState.Closed)
{
iConn.Close();
}
return Ds;
}
} public DataSet RunProcedure(string DbType,string storeProcName,IDbDataParameter[] parameters)
{
using (IDbConnection iConn=GetConnection(DbType))
{
DataSet Ds = new DataSet();
IDataAdapter iDa = GetAdapter(DbType,BuildQueryCommand(DbType,iConn,storeProcName,parameters));
((SqlDataAdapter)iDa).Fill(Ds);
if(iConn.State!=ConnectionState.Closed)
{
iConn.Close();
}
return Ds;
}
}
#endregion
}
}

一个很好用的SqlHelper类的更多相关文章

  1. 一个很棒的PHP缓存类,收藏下

    <?php class Cache { /** 缓存目录 **/ var $CacheDir = './cache'; /** 缓存的文件 **/ var $CacheFile = ''; /* ...

  2. 整理出一个比较实用的SqlHelper类 满足大多数情况的使用

    /// <summary> /// SqlHelper类 by zy 2016-3-11 /// </summary> public sealed class SqlHelpe ...

  3. c#中sqlhelper类的编写(二)

    上一篇文章讲了简易版的SqlHelper类的编写,我们在这里就上一篇文章末尾提出的问题写出解决方案. sql语句注入攻击已经是众所周知的了.我们如何在C#中保护自己的数据库不被这样的方式攻击呢? 不用 ...

  4. JAVA WEB SQLHelper类的封装

    在这次做项目中,我对自己最满意的就是封装了一下SQLHelper类,我对自己感到骄傲主要是 我是初学者,我刚开始不知道可以这样做,我只是想着试着去这样做了,结果真的可以,所以我 在我的模块就自己封装了 ...

  5. ADO.NET复习——自己编写SqlHelper类

    今天复习了一次ADO.NET基础,整理一下自己的认为的重点: 编写SqlHelper类,方便我们执行数据库语句,这时可以直接调用封装在SqlHelper类的方法.现在大多数公司面试的时候,给你的面试题 ...

  6. 用CIL写程序:定义一个叫“慕容小匹夫”的类

    前文回顾: <用CIL写程序:你好,沃尔德> <用CIL写程序:写个函数做加法> 前言: 今天是乙未羊年的第一天,小匹夫先在这里给各位看官拜个年了.不知道各位看官是否和匹夫一样 ...

  7. 最新的SqlHelper 类

    最新的SqlHelper 类 摘自:http://www.cnblogs.com/sufei/archive/2010/01/14/1648026.html using System; using S ...

  8. c#中sqlhelper类的编写(一)

    在.net平台的项目开发中,凡是用到数据库交互的,都有必要了解SqlHelper类的原理. 步骤一: 我就拿WPF项目开发作为例子.首先要新建一个App.config(应用程序配置文件).注意,在VS ...

  9. [置顶] 自己写sqlhelper类

    自己写sqlhelper类 using System; using System.Collections.Generic; using System.Configuration; using Syst ...

随机推荐

  1. jzoj4512

    01分數規畫 我們可以二分一個ans,然後化一下式子 一個總共有k個人的方案,要使(a[1]+a[2]+....+a[k])/(b[1]+b[2]+....+b[k])>=ans(a[1]+a[ ...

  2. postgresql-hdd,ssd,效率

    既有ssd又有hdd是将数据存储到ssd还是将索引存储到ssd的效率更高呢? 一种说法是索引是随机扫描,将索引放入ssd效率会增高, 一种说法是将数据放入ssd效率更高   最好的情况是将数据和索引都 ...

  3. psutil 跨平台根据程序名杀进程

    笔者在项目中遇到过需要根据进程名杀进程的需求,利用python库psutil实现了此功能. 模块地址: https://pypi.python.org/pypi/psutil/   psutil功能 ...

  4. C++类和对象(一)&&实现offsetof宏&&this指针

    一.目录 1.对象的相关知识 2.类的定义 3.类的实例化 4.类对象模型 5.模拟实现offsetof宏 6.this指针 二.正文 1.对象的相关知识 C语言是面向过程的,关注的是过程,分析求解问 ...

  5. [Umbraco] macro(宏)在umbraco中的作用

    macro在umbraco中是一个核心的应用,它是模板页中用于动态加载内容的标签(模板指令),宏可以是基于XSLT文件创建,亦可以是基于ASP.NET用户控件创建 在develop下的Macros中创 ...

  6. MySQL笔记(4)---表

    1.前言 上一章记录了MySQL中的一些文件组成,以及相关作用和参数配置,本章开始记录深层次的存储结构,以便更好理解MySQL的设计. 2.索引组织表 InnoDB中,表都是根据主键顺序组织存放的,这 ...

  7. 自测 基础 js 脚本。

    <html> <head> <script> //function(<text>a{[]}lert('x')</text>)() docum ...

  8. Apache本地配置虚拟域名

    转载+修改 例:虚拟域名为 aaa.com 端口为默认80 index.html所在目录  D:/wamp/www/web 不用解析域名,使用虚假的域名也可以 apache安装完默认是不开启虚拟服务器 ...

  9. 深入了解preventDefault与stopPropagation

    event.preventDefault()用法介绍(阻止默认事件) 该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作).例如,如果 type 属性是 "subm ...

  10. Chapter 3 Phenomenon——21

    "Nobody will believe that, you know." “你知道吗没有人会相信会是这样的” His voice held an edge of derision ...