C#工具类之数据库连接
阅读原文时间:2023年07月15日阅读:1

一、SQL Server

///

/// 数据库的通用访问代码 /// 此类为抽象类, /// 不允许实例化,在应用时直接调用即可 ///
public abstract class SqlHelper
{
/// /// 数据库连接字符串 ///

     public static string connectionString = "";

     // Hashtable to store cached parameters  
     private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());

     #region ExecteNonQuery操作方法集合  
     /// <summary>  
     ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。  
     /// 使用参数数组形式提供参数列表  
     /// </summary>  
     /// <param name="connectionString">一个有效的数据库连接字符串</param>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>  
     public static bool ExecteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             SqlCommand cmd = new SqlCommand();  
             using (SqlConnection conn = new SqlConnection(connectionString))  
             {  
                 //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中  
                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);  
                 int val = cmd.ExecuteNonQuery();  
                 //清空SqlCommand中的参数列表  
                 cmd.Parameters.Clear();  
                 return val >  ? true : false;  
             }  
         }  
         catch  
         {  
             return false;  
         }

     }

     /// <summary>  
     ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。  
     /// 使用参数数组形式提供参数列表  
     /// </summary>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>  
     public static bool ExecteNonQuery(CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             return ExecteNonQuery(connectionString, cmdType, cmdText, commandParameters);  
         }  
         catch  
         {  
             return false;  
         }

     }

     /// <summary>  
     ///存储过程专用  
     /// </summary>  
     /// <param name="cmdText">存储过程的名字</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>  
     public static bool ExecteNonQueryProducts(string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             return ExecteNonQuery(CommandType.StoredProcedure, cmdText, commandParameters);

         }  
         catch  
         {  
             return false;  
         }  
     }

     /// <summary>  
     ///Sql语句专用  
     /// </summary>  
     /// <param name="cmdText">T\_Sql语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns>  
     public static bool ExecteNonQueryText(string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             return ExecteNonQuery(CommandType.Text, cmdText, commandParameters);  
         }  
         catch  
         {  
             return false;  
         }

     }

     #endregion

     #region GetTable操作方法集合

     /// <summary>  
     /// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接  
     /// 使用参数数组提供参数  
     /// </summary>  
     /// <param name="connecttionString">一个现有的数据库连接</param>  
     /// <param name="cmdTye">SqlCommand命令类型</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>  
     public static DataTableCollection GetTable(string connecttionString, CommandType cmdTye, string cmdText, SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             SqlCommand cmd = new SqlCommand();  
             DataSet ds = new DataSet();  
             using (SqlConnection conn = new SqlConnection(connecttionString))  
             {  
                 PrepareCommand(cmd, conn, null, cmdTye, cmdText, commandParameters);  
                 SqlDataAdapter adapter = new SqlDataAdapter();  
                 adapter.SelectCommand = cmd;  
                 adapter.Fill(ds);  
             }  
             DataTableCollection table = ds.Tables;  
             return table;  
         }  
         catch (Exception ex)  
         {  
             return null;  
         }

     }

     /// <summary>  
     /// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接  
     /// 使用参数数组提供参数  
     /// </summary>  
     /// <param name="cmdTye">SqlCommand命令类型</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>  
     public static DataTableCollection GetTable(CommandType cmdTye, string cmdText, SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             return GetTable(SqlHelper.connectionString, cmdTye, cmdText, commandParameters);  
         }  
         catch  
         {  
             return null;

         }

     }

     /// <summary>  
     /// 存储过程专用  
     /// </summary>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>  
     public static DataTableCollection GetTableProducts(string cmdText, SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             return GetTable(CommandType.StoredProcedure, cmdText, commandParameters);  
         }  
         catch  
         {  
             return null;  
         }  
     }

     /// <summary>  
     /// Sql语句专用  
     /// </summary>  
     /// <param name="cmdText"> T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个表集合(DataTableCollection)表示查询得到的数据集</returns>  
     public static DataTableCollection GetTableText(string cmdText, SqlParameter\[\] commandParameters)  
     {  
         try  
         {  
             return GetTable(CommandType.Text, cmdText, commandParameters);  
         }  
         catch  
         {  
             System.Windows.Forms.MessageBox.Show("查询后台出现错误,请重试!");  
             return null;  
         }  
     }

     #endregion

     #region 检查是否存在  
     /// <summary>  
     /// 检查是否存在 存在:true  
     /// </summary>  
     /// <param name="strSql">Sql语句</param>  
     /// <param name="cmdParms">参数</param>  
     /// <returns>bool结果</returns>  
     public static bool Exists(string strSql, params SqlParameter\[\] cmdParms)  
     {  
         try  
         {  
             int cmdresult = Convert.ToInt32(ExecuteScalar(connectionString, CommandType.Text, strSql, cmdParms));  
             if (cmdresult == )  
             {  
                 return false;  
             }  
             else  
             {  
                 return true;  
             }  
         }  
         catch (Exception ex)  
         {  
             return false;  
         }

     }  
     #endregion

     #region 各方法SqlParameter参数处理  
     /// <summary>  
     /// 为执行命令准备参数  
     /// </summary>  
     /// <param name="cmd">SqlCommand 命令</param>  
     /// <param name="conn">已经存在的数据库连接</param>  
     /// <param name="trans">数据库事物处理</param>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">Command text,T-SQL语句 例如 Select \* from Products</param>  
     /// <param name="cmdParms">返回带参数的命令</param>  
     private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter\[\] cmdParms)  
     {  
         try  
         {  
             //判断数据库连接状态  
             if (conn.State != ConnectionState.Open)  
                 conn.Open();  
             cmd.Connection = conn;  
             cmd.CommandText = cmdText;  
             //判断是否需要事物处理  
             if (trans != null)  
                 cmd.Transaction = trans;  
             cmd.CommandType = cmdType;  
             if (cmdParms != null)  
             {  
                 foreach (SqlParameter parm in cmdParms)  
                     cmd.Parameters.Add(parm);  
             }  
         }  
         catch(Exception ex)  
         {  
             MessageBox.Show("连接服务器发生错误,请检查!", "错误!", MessageBoxButtons.OK, MessageBoxIcon.Error);  
             System.Environment.Exit();  
         }

     }

     #endregion

     #region 其他查询方法集合

     /// <summary>  
     /// 执行命令,返回一个在连接字符串中指定的数据库结果集  
     /// 使用所提供的参数。  
     /// </summary>  
     /// <param name="connectionString">一个有效的数据库连接字符串</param>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>A SqlDataReader containing the results</returns>  
     public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         SqlCommand cmd = new SqlCommand();  
         SqlConnection conn = new SqlConnection(connectionString);  
         // we use a try/catch here because if the method throws an exception we want to  
         // close the connection throw code, because no datareader will exist, hence the  
         // commandBehaviour.CloseConnection will not work  
         try  
         {  
             PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);  
             SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             cmd.Parameters.Clear();  
             return rdr;  
         }  
         catch  
         {  
             conn.Close();  
             throw;  
         }  
     }

     #region//ExecuteDataSet方法

     /// <summary>  
     /// return a dataset  
     /// </summary>  
     /// <param name="connectionString">一个有效的数据库连接字符串</param>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>return a dataset</returns>  
     public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         SqlCommand cmd = new SqlCommand();  
         try  
         {  
             using (SqlConnection conn = new SqlConnection(connectionString))  
             {  
                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);  
                 SqlDataAdapter da = new SqlDataAdapter();  
                 DataSet ds = new DataSet();  
                 da.SelectCommand = cmd;  
                 da.Fill(ds);  
                 return ds;  
             }  
         }  
         catch  
         {  
             throw;  
         }  
     }

     /// <summary>  
     /// 返回一个DataSet  
     /// </summary>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>return a dataset</returns>  
     public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         return ExecuteDataSet(connectionString, cmdType, cmdText, commandParameters);  
     }

     /// <summary>  
     /// 返回一个DataSet  
     /// </summary>  
     /// <param name="cmdText">存储过程的名字</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>return a dataset</returns>  
     public static DataSet ExecuteDataSetProducts(string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         return ExecuteDataSet(connectionString, CommandType.StoredProcedure, cmdText, commandParameters);  
     }

     /// <summary>  
     /// 返回一个DataSet  
     /// </summary>  
     /// <param name="cmdText">T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>return a dataset</returns>  
     public static DataSet ExecuteDataSetText(string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         return ExecuteDataSet(connectionString, CommandType.Text, cmdText, commandParameters);  
     }

     public static DataView ExecuteDataSet(string connectionString, string sortExpression, string direction, CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         SqlCommand cmd = new SqlCommand();  
         try  
         {  
             using (SqlConnection conn = new SqlConnection(connectionString))  
             {  
                 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);  
                 SqlDataAdapter da = new SqlDataAdapter();  
                 DataSet ds = new DataSet();  
                 da.SelectCommand = cmd;  
                 da.Fill(ds);  
                 DataView dv = ds.Tables\[\].DefaultView;  
                 dv.Sort = sortExpression + " " + direction;  
                 return dv;  
             }  
         }  
         catch  
         {

             throw;  
         }  
     }  
     #endregion

     #region // ExecuteScalar方法

     /// <summary>  
     /// 返回第一行的第一列  
     /// </summary>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个对象</returns>  
     public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         return ExecuteScalar(SqlHelper.connectionString, cmdType, cmdText, commandParameters);  
     }

     /// <summary>  
     /// 返回第一行的第一列存储过程专用  
     /// </summary>  
     /// <param name="cmdText">存储过程的名字</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个对象</returns>  
     public static object ExecuteScalarProducts(string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         return ExecuteScalar(SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);  
     }

     /// <summary>  
     /// 返回第一行的第一列Sql语句专用  
     /// </summary>  
     /// <param name="cmdText">者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>返回一个对象</returns>  
     public static object ExecuteScalarText(string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         return ExecuteScalar(SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);  
     }

     /// <summary>  
     /// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));  
     /// </remarks>  
     /// <param name="connectionString">一个有效的数据库连接字符串</param>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>  
     public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         SqlCommand cmd = new SqlCommand();

         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);  
             object val = cmd.ExecuteScalar();  
             cmd.Parameters.Clear();  
             return val;  
         }  
     }

     /// <summary>  
     /// Execute a SqlCommand that returns the first column of the first record against an existing database connection  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));  
     /// </remarks>  
     /// <param name="connectionString">一个有效的数据库连接字符串</param>  
     /// <param name="cmdType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param>  
     /// <param name="cmdText">存储过程的名字或者 T-SQL 语句</param>  
     /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param>  
     /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>  
     public static object ExecuteScalar(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter\[\] commandParameters)  
     {  
         SqlCommand cmd = new SqlCommand();  
         PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);  
         object val = cmd.ExecuteScalar();  
         cmd.Parameters.Clear();  
         return val;  
     }

     #endregion

     /// <summary>  
     /// add parameter array to the cache  
     /// </summary>  
     /// <param name="cacheKey">Key to the parameter cache</param>  
     /// <param name="cmdParms">an array of SqlParamters to be cached</param>  
     public static void CacheParameters(string cacheKey, params SqlParameter\[\] commandParameters)  
     {  
         parmCache\[cacheKey\] = commandParameters;  
     }

     #endregion

 }

SQLHelper

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;
using System.Collections.Generic;
namespace Maticsoft.DBUtility
{
///

/// 数据访问抽象基础类 ///
public abstract class DbHelperSQL
{
//数据库连接字符串(web.config来配置),多数据库可使用DbHelperSQLP来实现.
public static string connectionString = "连接字符串";
public DbHelperSQL()
{
}

     #region 公用方法  
     /// <summary>  
     /// 判断是否存在某表的某个字段  
     /// </summary>  
     /// <param name="tableName">表名称</param>  
     /// <param name="columnName">列名称</param>  
     /// <returns>是否存在</returns>  
     public static bool ColumnExists(string tableName, string columnName)  
     {  
         string sql = "select count(1) from syscolumns where \[id\]=object\_id('" + tableName + "') and \[name\]='" + columnName + "'";  
         object res = GetSingle(sql);  
         if (res == null)  
         {  
             return false;  
         }  
         return Convert.ToInt32(res) > ;  
     }  
     public static int GetMaxID(string FieldName, string TableName)  
     {  
         string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
         object obj = GetSingle(strsql);  
         if (obj == null)  
         {  
             return ;  
         }  
         else  
         {  
             return int.Parse(obj.ToString());  
         }  
     }  
     public static bool Exists(string strSql)  
     {  
         object obj = GetSingle(strSql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     /// <summary>  
     /// 表是否存在  
     /// </summary>  
     /// <param name="TableName"></param>  
     /// <returns></returns>  
     public static bool TabExists(string TableName)  
     {  
         string strsql = "select count(\*) from sysobjects where id = object\_id(N'\[" + TableName + "\]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";  
         //string strsql = "SELECT count(\*) FROM sys.objects WHERE object\_id = OBJECT\_ID(N'\[dbo\].\[" + TableName + "\]') AND type in (N'U')";  
         object obj = GetSingle(strsql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     public static bool Exists(string strSql, params SqlParameter\[\] cmdParms)  
     {  
         object obj = GetSingle(strSql, cmdParms);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     #endregion  

     #region  执行简单SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  

     public static int ExecuteSqlByTime(string SQLString, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     cmd.CommandTimeout = Times;  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行Sql和Oracle滴混合事务  
     /// </summary>  
     /// <param name="list">SQL命令行列表</param>  
     /// <param name="oracleCmdSqlList">Oracle命令行列表</param>  
     /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns>  
     public static int ExecuteSqlTran(List<CommandInfo> list, List<CommandInfo> oracleCmdSqlList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             SqlCommand cmd = new SqlCommand();  
             cmd.Connection = conn;  
             SqlTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 foreach (CommandInfo myDE in list)  
                 {  
                     string cmdText = myDE.CommandText;  
                     SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Parameters;  
                     PrepareCommand(cmd, conn, tx, cmdText, cmdParms);  
                     if (myDE.EffentNextType == EffentNextType.SolicitationEvent)  
                     {  
                         if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                         {  
                             tx.Rollback();  
                             throw new Exception("违背要求"+myDE.CommandText+"必须符合select count(..的格式");  
                             //return 0;  
                         }  

                         object obj = cmd.ExecuteScalar();  
                         bool isHave = false;  
                         if (obj == null && obj == DBNull.Value)  
                         {  
                             isHave = false;  
                         }  
                         isHave = Convert.ToInt32(obj) > ;  
                         if (isHave)  
                         {  
                             //引发事件  
                             myDE.OnSolicitationEvent();  
                         }  
                     }  
                     if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                     {  
                         if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");  
                             //return 0;  
                         }  

                         object obj = cmd.ExecuteScalar();  
                         bool isHave = false;  
                         if (obj == null && obj == DBNull.Value)  
                         {  
                             isHave = false;  
                         }  
                         isHave = Convert.ToInt32(obj) > ;  

                         if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");  
                             //return 0;  
                         }  
                         if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");  
                             //return 0;  
                         }  
                         continue;  
                     }  
                     int val = cmd.ExecuteNonQuery();  
                     if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == )  
                     {  
                         tx.Rollback();  
                         throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");  
                         //return 0;  
                     }  
                     cmd.Parameters.Clear();  
                 }  
                 string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");  
                 bool res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);  
                 if (!res)  
                 {  
                     tx.Rollback();  
                     throw new Exception("Oracle执行失败");  
                     // return -1;  
                 }  
                 tx.Commit();  
                 return ;  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 tx.Rollback();  
                 throw e;  
             }  
             catch (Exception e)  
             {  
                 tx.Rollback();  
                 throw e;  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static int ExecuteSqlTran(List<String> SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             SqlCommand cmd = new SqlCommand();  
             cmd.Connection = conn;  
             SqlTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 int count = ;  
                 for (int n = ; n < SQLStringList.Count; n++)  
                 {  
                     string strsql = SQLStringList\[n\];  
                     if (strsql.Trim().Length > )  
                     {  
                         cmd.CommandText = strsql;  
                         count += cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
                 return count;  
             }  
             catch  
             {  
                 tx.Rollback();  
                 return ;  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, string content)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand(SQLString, connection);  
             System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static object ExecuteSqlGet(string SQLString, string content)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand(SQLString, connection);  
             System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 object obj = cmd.ExecuteScalar();  
                 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                 {  
                     return null;  
                 }  
                 else  
                 {  
                     return obj;  
                 }  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
     /// </summary>  
     /// <param name="strSQL">SQL语句</param>  
     /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSqlInsertImg(string strSQL, byte\[\] fs)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand(strSQL, connection);  
             System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);  
             myParameter.Value = fs;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  
     public static object GetSingle(string SQLString, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     cmd.CommandTimeout = Times;  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>SqlDataReader</returns>  
     public static SqlDataReader ExecuteReader(string strSQL)  
     {  
         SqlConnection connection = new SqlConnection(connectionString);  
         SqlCommand cmd = new SqlCommand(strSQL, connection);  
         try  
         {  
             connection.Open();  
             SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             return myReader;  
         }  
         catch (System.Data.SqlClient.SqlException e)  
         {  
             throw e;  
         }     

     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);  
                 command.Fill(ds, "ds");  
             }  
             catch (System.Data.SqlClient.SqlException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  
     public static DataSet Query(string SQLString, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);  
                 command.SelectCommand.CommandTimeout = Times;  
                 command.Fill(ds, "ds");  
             }  
             catch (System.Data.SqlClient.SqlException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  

     #endregion  

     #region 执行带参数的SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     int rows = cmd.ExecuteNonQuery();  
                     cmd.Parameters.Clear();  
                     return rows;  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public static void ExecuteSqlTran(Hashtable SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 {  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Value;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 { int count = ;  
                     //循环  
                     foreach (CommandInfo myDE in cmdList)  
                     {  
                         string cmdText = myDE.CommandText;  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Parameters;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  

                         if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                         {  
                             if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  

                             object obj = cmd.ExecuteScalar();  
                             bool isHave = false;  
                             if (obj == null && obj == DBNull.Value)  
                             {  
                                 isHave = false;  
                             }  
                             isHave = Convert.ToInt32(obj) > ;  

                             if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  
                             if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  
                             continue;  
                         }  
                         int val = cmd.ExecuteNonQuery();  
                         count += val;  
                         if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == )  
                         {  
                             trans.Rollback();  
                             return ;  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                     return count;  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 {  
                     int indentity = ;  
                     //循环  
                     foreach (CommandInfo myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.CommandText;  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Parameters;  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.InputOutput)  
                             {  
                                 q.Value = indentity;  
                             }  
                         }  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.Output)  
                             {  
                                 indentity = Convert.ToInt32(q.Value);  
                             }  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 {  
                     int indentity = ;  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Value;  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.InputOutput)  
                             {  
                                 q.Value = indentity;  
                             }  
                         }  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.Output)  
                             {  
                                 indentity = Convert.ToInt32(q.Value);  
                             }  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     object obj = cmd.ExecuteScalar();  
                     cmd.Parameters.Clear();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>SqlDataReader</returns>  
     public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         SqlConnection connection = new SqlConnection(connectionString);  
         SqlCommand cmd = new SqlCommand();  
         try  
         {  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             cmd.Parameters.Clear();  
             return myReader;  
         }  
         catch (System.Data.SqlClient.SqlException e)  
         {  
             throw e;  
         }  
         //          finally  
         //          {  
         //              cmd.Dispose();  
         //              connection.Close();  
         //          }     

     }  

     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand();  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             using (SqlDataAdapter da = new SqlDataAdapter(cmd))  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds, "ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch (System.Data.SqlClient.SqlException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  

             foreach (SqlParameter parameter in cmdParms)  
             {  
                 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
                     (parameter.Value == null))  
                 {  
                     parameter.Value = DBNull.Value;  
                 }  
                 cmd.Parameters.Add(parameter);  
             }  
         }  
     }  

     #endregion  

     #region 存储过程操作  

     /// <summary>  
     /// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>SqlDataReader</returns>  
     public static SqlDataReader RunProcedure(string storedProcName, IDataParameter\[\] parameters)  
     {  
         SqlConnection connection = new SqlConnection(connectionString);  
         SqlDataReader returnReader;  
         connection.Open();  
         SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);  
         command.CommandType = CommandType.StoredProcedure;  
         returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);  
         return returnReader;  

     }  

     /// <summary>  
     /// 执行存储过程  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <param name="tableName">DataSet结果中的表名</param>  
     /// <returns>DataSet</returns>  
     public static DataSet RunProcedure(string storedProcName, IDataParameter\[\] parameters, string tableName)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet dataSet = new DataSet();  
             connection.Open();  
             SqlDataAdapter sqlDA = new SqlDataAdapter();  
             sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);  
             sqlDA.Fill(dataSet, tableName);  
             connection.Close();  
             return dataSet;  
         }  
     }  
     public static DataSet RunProcedure(string storedProcName, IDataParameter\[\] parameters, string tableName, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet dataSet = new DataSet();  
             connection.Open();  
             SqlDataAdapter sqlDA = new SqlDataAdapter();  
             sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);  
             sqlDA.SelectCommand.CommandTimeout = Times;  
             sqlDA.Fill(dataSet, tableName);  
             connection.Close();  
             return dataSet;  
         }  
     }  

     /// <summary>  
     /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)  
     /// </summary>  
     /// <param name="connection">数据库连接</param>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>SqlCommand</returns>  
     private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter\[\] parameters)  
     {  
         SqlCommand command = new SqlCommand(storedProcName, connection);  
         command.CommandType = CommandType.StoredProcedure;  
         foreach (SqlParameter parameter in parameters)  
         {  
             if (parameter != null)  
             {  
                 // 检查未分配值的输出参数,将其分配以DBNull.Value.  
                 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
                     (parameter.Value == null))  
                 {  
                     parameter.Value = DBNull.Value;  
                 }  
                 command.Parameters.Add(parameter);  
             }  
         }  

         return command;  
     }  

     /// <summary>  
     /// 执行存储过程,返回影响的行数  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <param name="rowsAffected">影响的行数</param>  
     /// <returns></returns>  
     public static int RunProcedure(string storedProcName, IDataParameter\[\] parameters, out int rowsAffected)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             int result;  
             connection.Open();  
             SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);  
             rowsAffected = command.ExecuteNonQuery();  
             result = (int)command.Parameters\["ReturnValue"\].Value;  
             //Connection.Close();  
             return result;  
         }  
     }  

     /// <summary>  
     /// 创建 SqlCommand 对象实例(用来返回一个整数值)  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>SqlCommand 对象实例</returns>  
     private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter\[\] parameters)  
     {  
         SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);  
         command.Parameters.Add(new SqlParameter("ReturnValue",  
             SqlDbType.Int, , ParameterDirection.ReturnValue,  
             false, , , string.Empty, DataRowVersion.Default, null));  
         return command;  
     }  
     #endregion  

 }  

}

DBHelperSQL (注意:需引用类库DBUtility.dll,下载地址:http://download.csdn.net/detail/airrose/3275957)

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;
using System.Collections.Generic;
namespace Maticsoft.DBUtility
{
///

/// 数据访问类,可用于访问不同数据库 ///
public class DbHelperSQLP
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public string connectionString = "连接字符串";
public DbHelperSQLP()
{
}
public DbHelperSQLP(string ConnectionString)
{
connectionString = ConnectionString;
}

     #region 公用方法  
     /// <summary>  
     /// 判断是否存在某表的某个字段  
     /// </summary>  
     /// <param name="tableName">表名称</param>  
     /// <param name="columnName">列名称</param>  
     /// <returns>是否存在</returns>  
     public bool ColumnExists(string tableName, string columnName)  
     {  
         string sql = "select count(1) from syscolumns where \[id\]=object\_id('" + tableName + "') and \[name\]='" + columnName + "'";  
         object res = GetSingle(sql);  
         if (res == null)  
         {  
             return false;  
         }  
         return Convert.ToInt32(res) > ;  
     }  
     public int GetMaxID(string FieldName, string TableName)  
     {  
         string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
         object obj = GetSingle(strsql);  
         if (obj == null)  
         {  
             return ;  
         }  
         else  
         {  
             return int.Parse(obj.ToString());  
         }  
     }  
     public bool Exists(string strSql)  
     {  
         object obj = GetSingle(strSql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     /// <summary>  
     /// 表是否存在  
     /// </summary>  
     /// <param name="TableName"></param>  
     /// <returns></returns>  
     public bool TabExists(string TableName)  
     {  
         string strsql = "select count(\*) from sysobjects where id = object\_id(N'\[" + TableName + "\]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";  
         //string strsql = "SELECT count(\*) FROM sys.objects WHERE object\_id = OBJECT\_ID(N'\[dbo\].\[" + TableName + "\]') AND type in (N'U')";  
         object obj = GetSingle(strsql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     public bool Exists(string strSql, params SqlParameter\[\] cmdParms)  
     {  
         object obj = GetSingle(strSql, cmdParms);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     #endregion  

     #region  执行简单SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public int ExecuteSql(string SQLString)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  

     public int ExecuteSqlByTime(string SQLString, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     cmd.CommandTimeout = Times;  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行Sql和Oracle滴混合事务  
     /// </summary>  
     /// <param name="list">SQL命令行列表</param>  
     /// <param name="oracleCmdSqlList">Oracle命令行列表</param>  
     /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns>  
     public int ExecuteSqlTran(List<CommandInfo> list, List<CommandInfo> oracleCmdSqlList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             SqlCommand cmd = new SqlCommand();  
             cmd.Connection = conn;  
             SqlTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 foreach (CommandInfo myDE in list)  
                 {  
                     string cmdText = myDE.CommandText;  
                     SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Parameters;  
                     PrepareCommand(cmd, conn, tx, cmdText, cmdParms);  
                     if (myDE.EffentNextType == EffentNextType.SolicitationEvent)  
                     {  
                         if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                         {  
                             tx.Rollback();  
                             throw new Exception("违背要求"+myDE.CommandText+"必须符合select count(..的格式");  
                             //return 0;  
                         }  

                         object obj = cmd.ExecuteScalar();  
                         bool isHave = false;  
                         if (obj == null && obj == DBNull.Value)  
                         {  
                             isHave = false;  
                         }  
                         isHave = Convert.ToInt32(obj) > ;  
                         if (isHave)  
                         {  
                             //引发事件  
                             myDE.OnSolicitationEvent();  
                         }  
                     }  
                     if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                     {  
                         if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");  
                             //return 0;  
                         }  

                         object obj = cmd.ExecuteScalar();  
                         bool isHave = false;  
                         if (obj == null && obj == DBNull.Value)  
                         {  
                             isHave = false;  
                         }  
                         isHave = Convert.ToInt32(obj) > ;  

                         if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");  
                             //return 0;  
                         }  
                         if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");  
                             //return 0;  
                         }  
                         continue;  
                     }  
                     int val = cmd.ExecuteNonQuery();  
                     if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == )  
                     {  
                         tx.Rollback();  
                         throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");  
                         //return 0;  
                     }  
                     cmd.Parameters.Clear();  
                 }  
                 string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");  
                 bool res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);  
                 if (!res)  
                 {  
                     tx.Rollback();  
                     throw new Exception("Oracle执行失败");  
                     // return -1;  
                 }  
                 tx.Commit();  
                 return ;  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 tx.Rollback();  
                 throw e;  
             }  
             catch (Exception e)  
             {  
                 tx.Rollback();  
                 throw e;  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public int ExecuteSqlTran(List<String> SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             SqlCommand cmd = new SqlCommand();  
             cmd.Connection = conn;  
             SqlTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 int count = ;  
                 for (int n = ; n < SQLStringList.Count; n++)  
                 {  
                     string strsql = SQLStringList\[n\];  
                     if (strsql.Trim().Length > )  
                     {  
                         cmd.CommandText = strsql;  
                         count += cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
                 return count;  
             }  
             catch  
             {  
                 tx.Rollback();  
                 return ;  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public int ExecuteSql(string SQLString, string content)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand(SQLString, connection);  
             System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public object ExecuteSqlGet(string SQLString, string content)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand(SQLString, connection);  
             System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 object obj = cmd.ExecuteScalar();  
                 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                 {  
                     return null;  
                 }  
                 else  
                 {  
                     return obj;  
                 }  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
     /// </summary>  
     /// <param name="strSQL">SQL语句</param>  
     /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
     /// <returns>影响的记录数</returns>  
     public int ExecuteSqlInsertImg(string strSQL, byte\[\] fs)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand(strSQL, connection);  
             System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);  
             myParameter.Value = fs;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.SqlClient.SqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public object GetSingle(string SQLString)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  
     public object GetSingle(string SQLString, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     cmd.CommandTimeout = Times;  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>SqlDataReader</returns>  
     public SqlDataReader ExecuteReader(string strSQL)  
     {  
         SqlConnection connection = new SqlConnection(connectionString);  
         SqlCommand cmd = new SqlCommand(strSQL, connection);  
         try  
         {  
             connection.Open();  
             SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             return myReader;  
         }  
         catch (System.Data.SqlClient.SqlException e)  
         {  
             throw e;  
         }     

     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public DataSet Query(string SQLString)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);  
                 command.Fill(ds, "ds");  
             }  
             catch (System.Data.SqlClient.SqlException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  
     public DataSet Query(string SQLString, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);  
                 command.SelectCommand.CommandTimeout = Times;  
                 command.Fill(ds, "ds");  
             }  
             catch (System.Data.SqlClient.SqlException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  

     #endregion  

     #region 执行带参数的SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public int ExecuteSql(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     int rows = cmd.ExecuteNonQuery();  
                     cmd.Parameters.Clear();  
                     return rows;  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public void ExecuteSqlTran(Hashtable SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 {  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Value;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 { int count = ;  
                     //循环  
                     foreach (CommandInfo myDE in cmdList)  
                     {  
                         string cmdText = myDE.CommandText;  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Parameters;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  

                         if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                         {  
                             if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  

                             object obj = cmd.ExecuteScalar();  
                             bool isHave = false;  
                             if (obj == null && obj == DBNull.Value)  
                             {  
                                 isHave = false;  
                             }  
                             isHave = Convert.ToInt32(obj) > ;  

                             if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  
                             if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  
                             continue;  
                         }  
                         int val = cmd.ExecuteNonQuery();  
                         count += val;  
                         if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == )  
                         {  
                             trans.Rollback();  
                             return ;  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                     return count;  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 {  
                     int indentity = ;  
                     //循环  
                     foreach (CommandInfo myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.CommandText;  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Parameters;  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.InputOutput)  
                             {  
                                 q.Value = indentity;  
                             }  
                         }  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.Output)  
                             {  
                                 indentity = Convert.ToInt32(q.Value);  
                             }  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter\[\])</param>  
     public void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)  
     {  
         using (SqlConnection conn = new SqlConnection(connectionString))  
         {  
             conn.Open();  
             using (SqlTransaction trans = conn.BeginTransaction())  
             {  
                 SqlCommand cmd = new SqlCommand();  
                 try  
                 {  
                     int indentity = ;  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         SqlParameter\[\] cmdParms = (SqlParameter\[\])myDE.Value;  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.InputOutput)  
                             {  
                                 q.Value = indentity;  
                             }  
                         }  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         foreach (SqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.Output)  
                             {  
                                 indentity = Convert.ToInt32(q.Value);  
                             }  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public object GetSingle(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             using (SqlCommand cmd = new SqlCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     object obj = cmd.ExecuteScalar();  
                     cmd.Parameters.Clear();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SqlClient.SqlException e)  
                 {  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>SqlDataReader</returns>  
     public SqlDataReader ExecuteReader(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         SqlConnection connection = new SqlConnection(connectionString);  
         SqlCommand cmd = new SqlCommand();  
         try  
         {  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             cmd.Parameters.Clear();  
             return myReader;  
         }  
         catch (System.Data.SqlClient.SqlException e)  
         {  
             throw e;  
         }  
         //          finally  
         //          {  
         //              cmd.Dispose();  
         //              connection.Close();  
         //          }     

     }  

     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public DataSet Query(string SQLString, params SqlParameter\[\] cmdParms)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlCommand cmd = new SqlCommand();  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             using (SqlDataAdapter da = new SqlDataAdapter(cmd))  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds, "ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch (System.Data.SqlClient.SqlException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  

             foreach (SqlParameter parameter in cmdParms)  
             {  
                 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
                     (parameter.Value == null))  
                 {  
                     parameter.Value = DBNull.Value;  
                 }  
                 cmd.Parameters.Add(parameter);  
             }  
         }  
     }  

     #endregion  

     #region 存储过程操作  

     /// <summary>  
     /// 执行存储过程,返回SqlDataReader  ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>SqlDataReader</returns>  
     public SqlDataReader RunProcedure(string storedProcName, IDataParameter\[\] parameters)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             SqlDataReader returnReader;  
             connection.Open();  
             SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);  
             command.CommandType = CommandType.StoredProcedure;  
             returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);  
             return returnReader;  
         }  
     }  

     /// <summary>  
     /// 执行存储过程  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <param name="tableName">DataSet结果中的表名</param>  
     /// <returns>DataSet</returns>  
     public DataSet RunProcedure(string storedProcName, IDataParameter\[\] parameters, string tableName)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet dataSet = new DataSet();  
             connection.Open();  
             SqlDataAdapter sqlDA = new SqlDataAdapter();  
             sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);  
             sqlDA.Fill(dataSet, tableName);  
             connection.Close();  
             return dataSet;  
         }  
     }  
     public DataSet RunProcedure(string storedProcName, IDataParameter\[\] parameters, string tableName, int Times)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             DataSet dataSet = new DataSet();  
             connection.Open();  
             SqlDataAdapter sqlDA = new SqlDataAdapter();  
             sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);  
             sqlDA.SelectCommand.CommandTimeout = Times;  
             sqlDA.Fill(dataSet, tableName);  
             connection.Close();  
             return dataSet;  
         }  
     }  

     /// <summary>  
     /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)  
     /// </summary>  
     /// <param name="connection">数据库连接</param>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>SqlCommand</returns>  
     private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter\[\] parameters)  
     {  
         SqlCommand command = new SqlCommand(storedProcName, connection);  
         command.CommandType = CommandType.StoredProcedure;  
         foreach (SqlParameter parameter in parameters)  
         {  
             if (parameter != null)  
             {  
                 // 检查未分配值的输出参数,将其分配以DBNull.Value.  
                 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
                     (parameter.Value == null))  
                 {  
                     parameter.Value = DBNull.Value;  
                 }  
                 command.Parameters.Add(parameter);  
             }  
         }  

         return command;  
     }  

     /// <summary>  
     /// 执行存储过程,返回影响的行数  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <param name="rowsAffected">影响的行数</param>  
     /// <returns></returns>  
     public int RunProcedure(string storedProcName, IDataParameter\[\] parameters, out int rowsAffected)  
     {  
         using (SqlConnection connection = new SqlConnection(connectionString))  
         {  
             int result;  
             connection.Open();  
             SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);  
             rowsAffected = command.ExecuteNonQuery();  
             result = (int)command.Parameters\["ReturnValue"\].Value;  
             //Connection.Close();  
             return result;  
         }  
     }  

     /// <summary>  
     /// 创建 SqlCommand 对象实例(用来返回一个整数值)  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>SqlCommand 对象实例</returns>  
     private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter\[\] parameters)  
     {  
         SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);  
         command.Parameters.Add(new SqlParameter("ReturnValue",  
             SqlDbType.Int, , ParameterDirection.ReturnValue,  
             false, , , string.Empty, DataRowVersion.Default, null));  
         return command;  
     }  
     #endregion  

 }  

}

DBHelperSQLP (注意:同上)

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Configuration;
using System.Data.SQLite;
namespace Maticsoft.DBUtility
{
///

/// 数据访问基础类(基于SQLite) /// 可以用户可以修改满足自己项目的需要。 ///
public abstract class DbHelperSQLite
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = "连接字符串";
public DbHelperSQLite()
{
}

     #region 公用方法  

     public static int GetMaxID(string FieldName, string TableName)  
     {  
         string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
         object obj = GetSingle(strsql);  
         if (obj == null)  
         {  
             return ;  
         }  
         else  
         {  
             return int.Parse(obj.ToString());  
         }  
     }  
     public static bool Exists(string strSql)  
     {  
         object obj = GetSingle(strSql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     public static bool Exists(string strSql, params SQLiteParameter\[\] cmdParms)  
     {  
         object obj = GetSingle(strSql, cmdParms);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  

     #endregion  

     #region  执行简单SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (System.Data.SQLite.SQLiteException E)  
                 {  
                     connection.Close();  
                     throw new Exception(E.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static void ExecuteSqlTran(ArrayList SQLStringList)  
     {  
         using (SQLiteConnection conn = new SQLiteConnection(connectionString))  
         {  
             conn.Open();  
             SQLiteCommand cmd = new SQLiteCommand();  
             cmd.Connection = conn;  
             SQLiteTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 for (int n = ; n < SQLStringList.Count; n++)  
                 {  
                     string strsql = SQLStringList\[n\].ToString();  
                     if (strsql.Trim().Length > )  
                     {  
                         cmd.CommandText = strsql;  
                         cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
             }  
             catch (System.Data.SQLite.SQLiteException E)  
             {  
                 tx.Rollback();  
                 throw new Exception(E.Message);  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, string content)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             SQLiteCommand cmd = new SQLiteCommand(SQLString, connection);  
             SQLiteParameter myParameter = new SQLiteParameter("@content", DbType.String);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.SQLite.SQLiteException E)  
             {  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
     /// </summary>  
     /// <param name="strSQL">SQL语句</param>  
     /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSqlInsertImg(string strSQL, byte\[\] fs)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             SQLiteCommand cmd = new SQLiteCommand(strSQL, connection);  
             SQLiteParameter myParameter = new SQLiteParameter("@fs", DbType.Binary);  
             myParameter.Value = fs;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.SQLite.SQLiteException E)  
             {  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             using (SQLiteCommand cmd = new SQLiteCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SQLite.SQLiteException e)  
                 {  
                     connection.Close();  
                     throw new Exception(e.Message);  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回SQLiteDataReader  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>SQLiteDataReader</returns>  
     public static SQLiteDataReader ExecuteReader(string strSQL)  
     {  
         SQLiteConnection connection = new SQLiteConnection(connectionString);  
         SQLiteCommand cmd = new SQLiteCommand(strSQL, connection);  
         try  
         {  
             connection.Open();  
             SQLiteDataReader myReader = cmd.ExecuteReader();  
             return myReader;  
         }  
         catch (System.Data.SQLite.SQLiteException e)  
         {  
             throw new Exception(e.Message);  
         }  

     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 SQLiteDataAdapter command = new SQLiteDataAdapter(SQLString, connection);  
                 command.Fill(ds, "ds");  
             }  
             catch (System.Data.SQLite.SQLiteException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  

     #endregion  

     #region 执行带参数的SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, params SQLiteParameter\[\] cmdParms)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             using (SQLiteCommand cmd = new SQLiteCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     int rows = cmd.ExecuteNonQuery();  
                     cmd.Parameters.Clear();  
                     return rows;  
                 }  
                 catch (System.Data.SQLite.SQLiteException E)  
                 {  
                     throw new Exception(E.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SQLiteParameter\[\])</param>  
     public static void ExecuteSqlTran(Hashtable SQLStringList)  
     {  
         using (SQLiteConnection conn = new SQLiteConnection(connectionString))  
         {  
             conn.Open();  
             using (SQLiteTransaction trans = conn.BeginTransaction())  
             {  
                 SQLiteCommand cmd = new SQLiteCommand();  
                 try  
                 {  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         SQLiteParameter\[\] cmdParms = (SQLiteParameter\[\])myDE.Value;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         cmd.Parameters.Clear();  

                         trans.Commit();  
                     }  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString, params SQLiteParameter\[\] cmdParms)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             using (SQLiteCommand cmd = new SQLiteCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     object obj = cmd.ExecuteScalar();  
                     cmd.Parameters.Clear();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.SQLite.SQLiteException e)  
                 {  
                     throw new Exception(e.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行查询语句,返回SQLiteDataReader  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>SQLiteDataReader</returns>  
     public static SQLiteDataReader ExecuteReader(string SQLString, params SQLiteParameter\[\] cmdParms)  
     {  
         SQLiteConnection connection = new SQLiteConnection(connectionString);  
         SQLiteCommand cmd = new SQLiteCommand();  
         try  
         {  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             SQLiteDataReader myReader = cmd.ExecuteReader();  
             cmd.Parameters.Clear();  
             return myReader;  
         }  
         catch (System.Data.SQLite.SQLiteException e)  
         {  
             throw new Exception(e.Message);  
         }  

     }  

     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString, params SQLiteParameter\[\] cmdParms)  
     {  
         using (SQLiteConnection connection = new SQLiteConnection(connectionString))  
         {  
             SQLiteCommand cmd = new SQLiteCommand();  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             using (SQLiteDataAdapter da = new SQLiteDataAdapter(cmd))  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds, "ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch (System.Data.SQLite.SQLiteException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(SQLiteCommand cmd, SQLiteConnection conn, SQLiteTransaction trans, string cmdText, SQLiteParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  
             foreach (SQLiteParameter parm in cmdParms)  
                 cmd.Parameters.Add(parm);  
         }  
     }  

     #endregion  

 }  

}

DBHelperSQLite

二、Oracle

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.OracleClient;
using System.Configuration;

namespace Maticsoft.DBUtility
{
///

/// 数据访问基础类(基于Oracle) /// 可以用户可以修改满足自己项目的需要。 ///
public abstract class DbHelperOra
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = "连接字符串";
public DbHelperOra()
{
}

     #region 公用方法  

     public static int GetMaxID(string FieldName, string TableName)  
     {  
         string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
         object obj = GetSingle(strsql);  
         if (obj == null)  
         {  
             return ;  
         }  
         else  
         {  
             return int.Parse(obj.ToString());  
         }  
     }  
     public static bool Exists(string strSql)  
     {  
         object obj = GetSingle(strSql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  

     public static bool Exists(string strSql, params OracleParameter\[\] cmdParms)  
     {  
         object obj = GetSingle(strSql, cmdParms);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  

     #endregion  

     #region  执行简单SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             using (OracleCommand cmd = new OracleCommand(SQLString,connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     int rows=cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch(System.Data.OracleClient.OracleException E)  
                 {  
                     connection.Close();  
                     throw new Exception(E.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static void ExecuteSqlTran(ArrayList SQLStringList)  
     {  
         using (OracleConnection conn = new OracleConnection(connectionString))  
         {  
             conn.Open();  
             OracleCommand cmd = new OracleCommand();  
             cmd.Connection=conn;  
             OracleTransaction tx=conn.BeginTransaction();  
             cmd.Transaction=tx;  
             try  
             {  
                 for(int n=;n<SQLStringList.Count;n++)  
                 {  
                     string strsql=SQLStringList\[n\].ToString();  
                     if (strsql.Trim().Length>)  
                     {  
                         cmd.CommandText=strsql;  
                         cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
             }  
             catch(System.Data.OracleClient.OracleException E)  
             {  
                 tx.Rollback();  
                 throw new Exception(E.Message);  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString,string content)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             OracleCommand cmd = new OracleCommand(SQLString,connection);  
             System.Data.OracleClient.OracleParameter myParameter = new System.Data.OracleClient.OracleParameter("@content", OracleType.NVarChar);  
             myParameter.Value = content ;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows=cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch(System.Data.OracleClient.OracleException E)  
             {  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
     /// </summary>  
     /// <param name="strSQL">SQL语句</param>  
     /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSqlInsertImg(string strSQL,byte\[\] fs)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             OracleCommand cmd = new OracleCommand(strSQL,connection);  
             System.Data.OracleClient.OracleParameter myParameter = new System.Data.OracleClient.OracleParameter("@fs", OracleType.LongRaw);  
             myParameter.Value = fs ;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows=cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch(System.Data.OracleClient.OracleException E)  
             {  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             using(OracleCommand cmd = new OracleCommand(SQLString,connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch(System.Data.OracleClient.OracleException e)  
                 {  
                     connection.Close();  
                     throw new Exception(e.Message);  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>OracleDataReader</returns>  
     public static OracleDataReader ExecuteReader(string strSQL)  
     {  
         OracleConnection connection = new OracleConnection(connectionString);  
         OracleCommand cmd = new OracleCommand(strSQL,connection);  
         try  
         {  
             connection.Open();  
             OracleDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             return myReader;  
         }  
         catch(System.Data.OracleClient.OracleException e)  
         {  
             throw new Exception(e.Message);  
         }             

     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 OracleDataAdapter command = new OracleDataAdapter(SQLString,connection);  
                 command.Fill(ds,"ds");  
             }  
             catch(System.Data.OracleClient.OracleException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  

     #endregion  

     #region 执行带参数的SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString,params OracleParameter\[\] cmdParms)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             using (OracleCommand cmd = new OracleCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null,SQLString, cmdParms);  
                     int rows=cmd.ExecuteNonQuery();  
                     cmd.Parameters.Clear();  
                     return rows;  
                 }  
                 catch(System.Data.OracleClient.OracleException E)  
                 {  
                     throw new Exception(E.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的OracleParameter\[\])</param>  
     public static void ExecuteSqlTran(Hashtable SQLStringList)  
     {  
         using (OracleConnection conn = new OracleConnection(connectionString))  
         {  
             conn.Open();  
             using (OracleTransaction trans = conn.BeginTransaction())  
             {  
                 OracleCommand cmd = new OracleCommand();  
                 try  
                 {  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string  cmdText=myDE.Key.ToString();  
                         OracleParameter\[\] cmdParms=(OracleParameter\[\])myDE.Value;  
                         PrepareCommand(cmd,conn,trans,cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         cmd.Parameters.Clear();  

                         trans.Commit();  
                     }  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString,params OracleParameter\[\] cmdParms)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             using (OracleCommand cmd = new OracleCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null,SQLString, cmdParms);  
                     object obj = cmd.ExecuteScalar();  
                     cmd.Parameters.Clear();  
                     if((Object.Equals(obj,null))||(Object.Equals(obj,System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch(System.Data.OracleClient.OracleException e)  
                 {  
                     throw new Exception(e.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行查询语句,返回OracleDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>OracleDataReader</returns>  
     public static OracleDataReader ExecuteReader(string SQLString,params OracleParameter\[\] cmdParms)  
     {  
         OracleConnection connection = new OracleConnection(connectionString);  
         OracleCommand cmd = new OracleCommand();  
         try  
         {  
             PrepareCommand(cmd, connection, null,SQLString, cmdParms);  
             OracleDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             cmd.Parameters.Clear();  
             return myReader;  
         }  
         catch(System.Data.OracleClient.OracleException e)  
         {  
             throw new Exception(e.Message);  
         }                     

     }         

     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString,params OracleParameter\[\] cmdParms)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             OracleCommand cmd = new OracleCommand();  
             PrepareCommand(cmd, connection, null,SQLString, cmdParms);  
             using( OracleDataAdapter da = new OracleDataAdapter(cmd) )  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds,"ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch(System.Data.OracleClient.OracleException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(OracleCommand cmd,OracleConnection conn,OracleTransaction trans, string cmdText, OracleParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  
             foreach (OracleParameter parm in cmdParms)  
                 cmd.Parameters.Add(parm);  
         }  
     }  

     #endregion  

     #region 存储过程操作  

     /// <summary>  
     /// 执行存储过程 返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>OracleDataReader</returns>  
     public static OracleDataReader RunProcedure(string storedProcName, IDataParameter\[\] parameters )  
     {  
         OracleConnection connection = new OracleConnection(connectionString);  
         OracleDataReader returnReader;  
         connection.Open();  
         OracleCommand command = BuildQueryCommand( connection,storedProcName, parameters );  
         command.CommandType = CommandType.StoredProcedure;  
         returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);  
         return returnReader;  
     }  

     /// <summary>  
     /// 执行存储过程  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <param name="tableName">DataSet结果中的表名</param>  
     /// <returns>DataSet</returns>  
     public static DataSet RunProcedure(string storedProcName, IDataParameter\[\] parameters, string tableName )  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             DataSet dataSet = new DataSet();  
             connection.Open();  
             OracleDataAdapter sqlDA = new OracleDataAdapter();  
             sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters );  
             sqlDA.Fill( dataSet, tableName );  
             connection.Close();  
             return dataSet;  
         }  
     }  

     /// <summary>  
     /// 构建 OracleCommand 对象(用来返回一个结果集,而不是一个整数值)  
     /// </summary>  
     /// <param name="connection">数据库连接</param>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>OracleCommand</returns>  
     private static OracleCommand BuildQueryCommand(OracleConnection connection,string storedProcName, IDataParameter\[\] parameters)  
     {  
         OracleCommand command = new OracleCommand( storedProcName, connection );  
         command.CommandType = CommandType.StoredProcedure;  
         foreach (OracleParameter parameter in parameters)  
         {  
             command.Parameters.Add( parameter );  
         }  
         return command;  
     }  

     /// <summary>  
     /// 执行存储过程,返回影响的行数  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <param name="rowsAffected">影响的行数</param>  
     /// <returns></returns>  
     public static int RunProcedure(string storedProcName, IDataParameter\[\] parameters, out int rowsAffected )  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             int result;  
             connection.Open();  
             OracleCommand command = BuildIntCommand(connection,storedProcName, parameters );  
             rowsAffected = command.ExecuteNonQuery();  
             result = (int)command.Parameters\["ReturnValue"\].Value;  
             //Connection.Close();  
             return result;  
         }  
     }  

     /// <summary>  
     /// 创建 OracleCommand 对象实例(用来返回一个整数值)  
     /// </summary>  
     /// <param name="storedProcName">存储过程名</param>  
     /// <param name="parameters">存储过程参数</param>  
     /// <returns>OracleCommand 对象实例</returns>  
     private static OracleCommand BuildIntCommand(OracleConnection connection,string storedProcName, IDataParameter\[\] parameters)  
     {  
         OracleCommand command = BuildQueryCommand(connection,storedProcName, parameters );  
         command.Parameters.Add( new OracleParameter ( "ReturnValue",  
             OracleType.Int32, , ParameterDirection.ReturnValue,  
             false,,,string.Empty,DataRowVersion.Default,null ));  
         return command;  
     }  
     #endregion    

 }  

}

DBHelperOra (注意:注意类库引用)

using System;
using System.Configuration;
using System.Data;
using System.Data.OracleClient;
using System.Collections;
using System.Collections.Generic;

namespace Maticsoft.DBUtility
{

 /// <summary>  
 /// A helper class used to execute queries against an Oracle database  
 /// </summary>  
 public abstract class OracleHelper  
 {  

     // Read the connection strings from the configuration file  
     public static readonly string ConnectionStringLocalTransaction = ConfigurationManager.AppSettings\["OraConnString1"\];  
     public static readonly string ConnectionStringInventoryDistributedTransaction = ConfigurationManager.AppSettings\["OraConnString2"\];  
     public static readonly string ConnectionStringOrderDistributedTransaction = ConfigurationManager.AppSettings\["OraConnString3"\];  
     public static readonly string ConnectionStringProfile = ConfigurationManager.AppSettings\["OraProfileConnString"\];  
     public static readonly string ConnectionStringMembership = ConfigurationManager.AppSettings\["OraMembershipConnString"\];  

     //Create a hashtable for the parameter cached  
     private static Hashtable parmCache = Hashtable.Synchronized(new Hashtable());  

     /// <summary>  
     /// Execute a database query which does not include a select  
     /// </summary>  
     /// <param name="connString">Connection string to database</param>  
     /// <param name="cmdType">Command type either stored procedure or SQL</param>  
     /// <param name="cmdText">Acutall SQL Command</param>  
     /// <param name="commandParameters">Parameters to bind to the command</param>  
     /// <returns></returns>  
     public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params OracleParameter\[\] commandParameters)  
     {  
         // Create a new Oracle command  
         OracleCommand cmd = new OracleCommand();  

         //Create a connection  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  

             //Prepare the command  
             PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);  

             //Execute the command  
             int val = cmd.ExecuteNonQuery();  
             connection.Close();  
             cmd.Parameters.Clear();  
             return val;  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string connectionString, string SQLString)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 OracleDataAdapter command = new OracleDataAdapter(SQLString, connection);  
                 command.Fill(ds, "ds");  
             }  
             catch (OracleException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             finally  
             {  
                 if (connection.State != ConnectionState.Closed)  
                 {  
                     connection.Close();  
                 }  
             }  
             return ds;  
         }  
     }  

     public static DataSet Query(string connectionString, string SQLString, params OracleParameter\[\] cmdParms)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             OracleCommand cmd = new OracleCommand();  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             using (OracleDataAdapter da = new OracleDataAdapter(cmd))  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds, "ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch (System.Data.OracleClient.OracleException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 finally  
                 {  
                     if (connection.State != ConnectionState.Closed)  
                     {  
                         connection.Close();  
                     }  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, string cmdText, OracleParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  
             foreach (OracleParameter parameter in cmdParms)  
             {  
                 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
                     (parameter.Value == null))  
                 {  
                     parameter.Value = DBNull.Value;  
                 }  
                 cmd.Parameters.Add(parameter);  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string connectionString, string SQLString)  
     {  
         using (OracleConnection connection = new OracleConnection(connectionString))  
         {  
             using (OracleCommand cmd = new OracleCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (OracleException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 finally  
                 {  
                     if (connection.State != ConnectionState.Closed)  
                     {  
                         connection.Close();  
                     }  
                 }  
             }  
         }  
     }  

     public static bool Exists(string connectionString,string strOracle)  
     {  
         object obj = OracleHelper.GetSingle(connectionString,strOracle);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  

     /// <summary>  
     /// Execute an OracleCommand (that returns no resultset) against an existing database transaction  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));  
     /// </remarks>  
     /// <param name="trans">an existing database transaction</param>  
     /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>  
     /// <param name="commandText">the stored procedure name or PL/SQL command</param>  
     /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>  
     /// <returns>an int representing the number of rows affected by the command</returns>  
     public static int ExecuteNonQuery(OracleTransaction trans, CommandType cmdType, string cmdText, params OracleParameter\[\] commandParameters)  
     {  
         OracleCommand cmd = new OracleCommand();  
         PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);  
         int val = cmd.ExecuteNonQuery();  
         cmd.Parameters.Clear();  
         return val;  
     }  

     /// <summary>  
     /// Execute an OracleCommand (that returns no resultset) against an existing database connection  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));  
     /// </remarks>  
     /// <param name="conn">an existing database connection</param>  
     /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>  
     /// <param name="commandText">the stored procedure name or PL/SQL command</param>  
     /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>  
     /// <returns>an int representing the number of rows affected by the command</returns>  
     public static int ExecuteNonQuery(OracleConnection connection, CommandType cmdType, string cmdText, params OracleParameter\[\] commandParameters)  
     {  

         OracleCommand cmd = new OracleCommand();  

         PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);  
         int val = cmd.ExecuteNonQuery();  
         cmd.Parameters.Clear();  
         return val;  
     }  
     /// <summary>  
     /// Execute an OracleCommand (that returns no resultset) against an existing database connection  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));  
     /// </remarks>  
     /// <param name="conn">an existing database connection</param>  
     /// <param name="commandText">the stored procedure name or PL/SQL command</param>  
     /// <returns>an int representing the number of rows affected by the command</returns>  
     public static int ExecuteNonQuery(string connectionString, string cmdText)  
     {  

         OracleCommand cmd = new OracleCommand();  
         OracleConnection connection = new OracleConnection(connectionString);  
         PrepareCommand(cmd, connection, null, CommandType.Text, cmdText, null);  
         int val = cmd.ExecuteNonQuery();  
         cmd.Parameters.Clear();  
         return val;  
     }  

     /// <summary>  
     /// Execute a select query that will return a result set  
     /// </summary>  
     /// <param name="connString">Connection string</param>  
     //// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>  
     /// <param name="commandText">the stored procedure name or PL/SQL command</param>  
     /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>  
     /// <returns></returns>  
     public static OracleDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params OracleParameter\[\] commandParameters)  
     {  
         OracleCommand cmd = new OracleCommand();  
         OracleConnection conn = new OracleConnection(connectionString);  
         try  
         {  
             //Prepare the command to execute  
             PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);  
             OracleDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             cmd.Parameters.Clear();  
             return rdr;  
         }  
         catch  
         {  
             conn.Close();  
             throw;  
         }  
     }  

     /// <summary>  
     /// Execute an OracleCommand that returns the first column of the first record against the database specified in the connection string  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));  
     /// </remarks>  
     /// <param name="connectionString">a valid connection string for a SqlConnection</param>  
     /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>  
     /// <param name="commandText">the stored procedure name or PL/SQL command</param>  
     /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>  
     /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>  
     public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params OracleParameter\[\] commandParameters)  
     {  
         OracleCommand cmd = new OracleCommand();  

         using (OracleConnection conn = new OracleConnection(connectionString))  
         {  
             PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);  
             object val = cmd.ExecuteScalar();  
             cmd.Parameters.Clear();  
             return val;  
         }  
     }  

     /// <summary>  
     /// Execute a OracleCommand (that returns a 1x1 resultset)  against the specified SqlTransaction  
     /// using the provided parameters.  
     /// </summary>  
     /// <param name="transaction">A   valid SqlTransaction</param>  
     /// <param name="commandType">The CommandType (stored procedure, text, etc.)</param>  
     /// <param name="commandText">The stored procedure name   or PL/SQL command</param>  
     /// <param name="commandParameters">An array of   OracleParamters used to execute the command</param>  
     /// <returns>An   object containing the value in the 1x1 resultset generated by the command</returns>  
     public static object ExecuteScalar(OracleTransaction transaction, CommandType commandType, string commandText, params OracleParameter\[\] commandParameters)  
     {  
         if (transaction == null)  
             throw new ArgumentNullException("transaction");  
         if (transaction != null && transaction.Connection == null)  
             throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");  

         // Create a command and prepare it for execution  
         OracleCommand cmd = new OracleCommand();  

         PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);  

         // Execute the command & return the results  
         object retval = cmd.ExecuteScalar();  

         // Detach the SqlParameters from the command object, so they can be used again  
         cmd.Parameters.Clear();  
         return retval;  
     }  

     /// <summary>  
     /// Execute an OracleCommand that returns the first column of the first record against an existing database connection  
     /// using the provided parameters.  
     /// </summary>  
     /// <remarks>  
     /// e.g.:  
     ///  Object obj = ExecuteScalar(conn, CommandType.StoredProcedure, "PublishOrders", new OracleParameter(":prodid", 24));  
     /// </remarks>  
     /// <param name="conn">an existing database connection</param>  
     /// <param name="commandType">the CommandType (stored procedure, text, etc.)</param>  
     /// <param name="commandText">the stored procedure name or PL/SQL command</param>  
     /// <param name="commandParameters">an array of OracleParamters used to execute the command</param>  
     /// <returns>An object that should be converted to the expected type using Convert.To{Type}</returns>  
     public static object ExecuteScalar(OracleConnection connectionString, CommandType cmdType, string cmdText, params OracleParameter\[\] commandParameters)  
     {  
         OracleCommand cmd = new OracleCommand();  

         PrepareCommand(cmd, connectionString, null, cmdType, cmdText, commandParameters);  
         object val = cmd.ExecuteScalar();  
         cmd.Parameters.Clear();  
         return val;  
     }  

     /// <summary>  
     /// Add a set of parameters to the cached  
     /// </summary>  
     /// <param name="cacheKey">Key value to look up the parameters</param>  
     /// <param name="commandParameters">Actual parameters to cached</param>  
     public static void CacheParameters(string cacheKey, params OracleParameter\[\] commandParameters)  
     {  
         parmCache\[cacheKey\] = commandParameters;  
     }  

     /// <summary>  
     /// Fetch parameters from the cache  
     /// </summary>  
     /// <param name="cacheKey">Key to look up the parameters</param>  
     /// <returns></returns>  
     public static OracleParameter\[\] GetCachedParameters(string cacheKey)  
     {  
         OracleParameter\[\] cachedParms = (OracleParameter\[\])parmCache\[cacheKey\];  

         if (cachedParms == null)  
             return null;  

         // If the parameters are in the cache  
         OracleParameter\[\] clonedParms = new OracleParameter\[cachedParms.Length\];  

         // return a copy of the parameters  
         for (int i = , j = cachedParms.Length; i < j; i++)  
             clonedParms\[i\] = (OracleParameter)((ICloneable)cachedParms\[i\]).Clone();  

         return clonedParms;  
     }  
     /// <summary>  
     /// Internal function to prepare a command for execution by the database  
     /// </summary>  
     /// <param name="cmd">Existing command object</param>  
     /// <param name="conn">Database connection object</param>  
     /// <param name="trans">Optional transaction object</param>  
     /// <param name="cmdType">Command type, e.g. stored procedure</param>  
     /// <param name="cmdText">Command test</param>  
     /// <param name="commandParameters">Parameters for the command</param>  
     private static void PrepareCommand(OracleCommand cmd, OracleConnection conn, OracleTransaction trans, CommandType cmdType, string cmdText, OracleParameter\[\] commandParameters)  
     {  

         //Open the connection if required  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  

         //Set up the command  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         cmd.CommandType = cmdType;  

         //Bind it to the transaction if it exists  
         if (trans != null)  
             cmd.Transaction = trans;  

         // Bind the parameters passed in  
         if (commandParameters != null)  
         {  
             foreach (OracleParameter parm in commandParameters)  
                 cmd.Parameters.Add(parm);  
         }  
     }  

     /// <summary>  
     /// Converter to use boolean data type with Oracle  
     /// </summary>  
     /// <param name="value">Value to convert</param>  
     /// <returns></returns>  
     public static string OraBit(bool value)  
     {  
         if (value)  
             return "Y";  
         else  
             return "N";  
     }  

     /// <summary>  
     /// Converter to use boolean data type with Oracle  
     /// </summary>  
     /// <param name="value">Value to convert</param>  
     /// <returns></returns>  
     public static bool OraBool(string value)  
     {  
         if (value.Equals("Y"))  
             return true;  
         else  
             return false;  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static bool ExecuteSqlTran(string conStr, List<CommandInfo> cmdList)  
     {  
         using (OracleConnection conn = new OracleConnection(conStr))  
         {  
             conn.Open();  
             OracleCommand cmd = new OracleCommand();  
             cmd.Connection = conn;  
             OracleTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 foreach (CommandInfo c in cmdList)  
                 {  
                     if (!String.IsNullOrEmpty(c.CommandText))  
                     {  
                         PrepareCommand(cmd, conn, tx, CommandType.Text, c.CommandText, (OracleParameter\[\])c.Parameters);  
                         if (c.EffentNextType == EffentNextType.WhenHaveContine || c.EffentNextType == EffentNextType.WhenNoHaveContine)  
                         {  
                             if (c.CommandText.ToLower().IndexOf("count(") == -)  
                             {  
                                 tx.Rollback();  
                                 throw new Exception("Oracle:违背要求" + c.CommandText + "必须符合select count(..的格式");  
                                 //return false;  
                             }  

                             object obj = cmd.ExecuteScalar();  
                             bool isHave = false;  
                             if (obj == null && obj == DBNull.Value)  
                             {  
                                 isHave = false;  
                             }  
                             isHave = Convert.ToInt32(obj) > ;  

                             if (c.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                             {  
                                 tx.Rollback();  
                                 throw new Exception("Oracle:违背要求" + c.CommandText + "返回值必须大于0");  
                                 //return false;  
                             }  
                             if (c.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                             {  
                                 tx.Rollback();  
                                 throw new Exception("Oracle:违背要求" + c.CommandText + "返回值必须等于0");  
                                 //eturn false;  
                             }  
                             continue;  
                         }  
                         int res = cmd.ExecuteNonQuery();  
                         if (c.EffentNextType == EffentNextType.ExcuteEffectRows && res == )  
                         {  
                             tx.Rollback();  
                             throw new Exception("Oracle:违背要求" + c.CommandText + "必须有影像行");  
                             // return false;  
                         }  
                     }  
                 }  
                 tx.Commit();  
                 return true;  
             }  
             catch (System.Data.OracleClient.OracleException E)  
             {  
                 tx.Rollback();  
                 throw E;  
             }  
             finally  
             {  
                 if (conn.State != ConnectionState.Closed)  
                 {  
                     conn.Close();  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static void ExecuteSqlTran(string conStr,List<String> SQLStringList)  
     {  
         using (OracleConnection conn = new OracleConnection(conStr))  
         {  
             conn.Open();  
             OracleCommand cmd = new OracleCommand();  
             cmd.Connection = conn;  
             OracleTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 foreach (string sql in SQLStringList)  
                 {  
                     if (!String.IsNullOrEmpty(sql))  
                     {  
                         cmd.CommandText = sql;  
                         cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
             }  
             catch (System.Data.OracleClient.OracleException E)  
             {  
                 tx.Rollback();  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 if (conn.State != ConnectionState.Closed)  
                     {  
                         conn.Close();  
                     }  
             }  
         }  
     }  
 }  

}

OracleHelper

三、MySql

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using MySql.Data.MySqlClient;
using System.Configuration;
using System.Data.Common;
using System.Collections.Generic;
namespace Maticsoft.DBUtility
{
///

/// 数据访问抽象基础类 ///
public abstract class DbHelperMySQL
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = "连接字符串";
public DbHelperMySQL()
{
}

     #region 公用方法  
     /// <summary>  
     /// 得到最大值  
     /// </summary>  
     /// <param name="FieldName"></param>  
     /// <param name="TableName"></param>  
     /// <returns></returns>  
     public static int GetMaxID(string FieldName, string TableName)  
     {  
         string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
         object obj = GetSingle(strsql);  
         if (obj == null)  
         {  
             return ;  
         }  
         else  
         {  
             return int.Parse(obj.ToString());  
         }  
     }  
     /// <summary>  
     /// 是否存在  
     /// </summary>  
     /// <param name="strSql"></param>  
     /// <returns></returns>  
     public static bool Exists(string strSql)  
     {  
         object obj = GetSingle(strSql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     /// <summary>  
     /// 是否存在(基于MySqlParameter)  
     /// </summary>  
     /// <param name="strSql"></param>  
     /// <param name="cmdParms"></param>  
     /// <returns></returns>  
     public static bool Exists(string strSql, params MySqlParameter\[\] cmdParms)  
     {  
         object obj = GetSingle(strSql, cmdParms);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     #endregion  

     #region  执行简单SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  

     public static int ExecuteSqlByTime(string SQLString, int Times)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     cmd.CommandTimeout = Times;  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行MySql和Oracle滴混合事务  
     /// </summary>  
     /// <param name="list">SQL命令行列表</param>  
     /// <param name="oracleCmdSqlList">Oracle命令行列表</param>  
     /// <returns>执行结果 0-由于SQL造成事务失败 -1 由于Oracle造成事务失败 1-整体事务执行成功</returns>  
     public static int ExecuteSqlTran(List<CommandInfo> list, List<CommandInfo> oracleCmdSqlList)  
     {  
         using (MySqlConnection conn = new MySqlConnection(connectionString))  
         {  
             conn.Open();  
             MySqlCommand cmd = new MySqlCommand();  
             cmd.Connection = conn;  
             MySqlTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 foreach (CommandInfo myDE in list)  
                 {  
                     string cmdText = myDE.CommandText;  
                     MySqlParameter\[\] cmdParms = (MySqlParameter\[\])myDE.Parameters;  
                     PrepareCommand(cmd, conn, tx, cmdText, cmdParms);  
                     if (myDE.EffentNextType == EffentNextType.SolicitationEvent)  
                     {  
                         if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                         {  
                             tx.Rollback();  
                             throw new Exception("违背要求"+myDE.CommandText+"必须符合select count(..的格式");  
                             //return 0;  
                         }  

                         object obj = cmd.ExecuteScalar();  
                         bool isHave = false;  
                         if (obj == null && obj == DBNull.Value)  
                         {  
                             isHave = false;  
                         }  
                         isHave = Convert.ToInt32(obj) > ;  
                         if (isHave)  
                         {  
                             //引发事件  
                             myDE.OnSolicitationEvent();  
                         }  
                     }  
                     if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                     {  
                         if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "必须符合select count(..的格式");  
                             //return 0;  
                         }  

                         object obj = cmd.ExecuteScalar();  
                         bool isHave = false;  
                         if (obj == null && obj == DBNull.Value)  
                         {  
                             isHave = false;  
                         }  
                         isHave = Convert.ToInt32(obj) > ;  

                         if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须大于0");  
                             //return 0;  
                         }  
                         if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                         {  
                             tx.Rollback();  
                             throw new Exception("SQL:违背要求" + myDE.CommandText + "返回值必须等于0");  
                             //return 0;  
                         }  
                         continue;  
                     }  
                     int val = cmd.ExecuteNonQuery();  
                     if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == )  
                     {  
                         tx.Rollback();  
                         throw new Exception("SQL:违背要求" + myDE.CommandText + "必须有影响行");  
                         //return 0;  
                     }  
                     cmd.Parameters.Clear();  
                 }  
                 string oraConnectionString = PubConstant.GetConnectionString("ConnectionStringPPC");  
                 bool res = OracleHelper.ExecuteSqlTran(oraConnectionString, oracleCmdSqlList);  
                 if (!res)  
                 {  
                     tx.Rollback();  
                     throw new Exception("执行失败");  
                     // return -1;  
                 }  
                 tx.Commit();  
                 return ;  
             }  
             catch (MySql.Data.MySqlClient.MySqlException e)  
             {  
                 tx.Rollback();  
                 throw e;  
             }  
             catch (Exception e)  
             {  
                 tx.Rollback();  
                 throw e;  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static int ExecuteSqlTran(List<String> SQLStringList)  
     {  
         using (MySqlConnection conn = new MySqlConnection(connectionString))  
         {  
             conn.Open();  
             MySqlCommand cmd = new MySqlCommand();  
             cmd.Connection = conn;  
             MySqlTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 int count = ;  
                 for (int n = ; n < SQLStringList.Count; n++)  
                 {  
                     string strsql = SQLStringList\[n\];  
                     if (strsql.Trim().Length > )  
                     {  
                         cmd.CommandText = strsql;  
                         count += cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
                 return count;  
             }  
             catch  
             {  
                 tx.Rollback();  
                 return ;  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, string content)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             MySqlCommand cmd = new MySqlCommand(SQLString, connection);  
             MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content", SqlDbType.NText);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (MySql.Data.MySqlClient.MySqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static object ExecuteSqlGet(string SQLString, string content)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             MySqlCommand cmd = new MySqlCommand(SQLString, connection);  
             MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@content", SqlDbType.NText);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 object obj = cmd.ExecuteScalar();  
                 if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                 {  
                     return null;  
                 }  
                 else  
                 {  
                     return obj;  
                 }  
             }  
             catch (MySql.Data.MySqlClient.MySqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
     /// </summary>  
     /// <param name="strSQL">SQL语句</param>  
     /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSqlInsertImg(string strSQL, byte\[\] fs)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             MySqlCommand cmd = new MySqlCommand(strSQL, connection);  
             MySql.Data.MySqlClient.MySqlParameter myParameter = new MySql.Data.MySqlClient.MySqlParameter("@fs", SqlDbType.Image);  
             myParameter.Value = fs;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (MySql.Data.MySqlClient.MySqlException e)  
             {  
                 throw e;  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  
     public static object GetSingle(string SQLString, int Times)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     cmd.CommandTimeout = Times;  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException e)  
                 {  
                     connection.Close();  
                     throw e;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>MySqlDataReader</returns>  
     public static MySqlDataReader ExecuteReader(string strSQL)  
     {  
         MySqlConnection connection = new MySqlConnection(connectionString);  
         MySqlCommand cmd = new MySqlCommand(strSQL, connection);  
         try  
         {  
             connection.Open();  
             MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             return myReader;  
         }  
         catch (MySql.Data.MySqlClient.MySqlException e)  
         {  
             throw e;  
         }     

     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);  
                 command.Fill(ds, "ds");  
             }  
             catch (MySql.Data.MySqlClient.MySqlException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  
     public static DataSet Query(string SQLString, int Times)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);  
                 command.SelectCommand.CommandTimeout = Times;  
                 command.Fill(ds, "ds");  
             }  
             catch (MySql.Data.MySqlClient.MySqlException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  

     #endregion  

     #region 执行带参数的SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, params MySqlParameter\[\] cmdParms)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             using (MySqlCommand cmd = new MySqlCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     int rows = cmd.ExecuteNonQuery();  
                     cmd.Parameters.Clear();  
                     return rows;  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException e)  
                 {  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter\[\])</param>  
     public static void ExecuteSqlTran(Hashtable SQLStringList)  
     {  
         using (MySqlConnection conn = new MySqlConnection(connectionString))  
         {  
             conn.Open();  
             using (MySqlTransaction trans = conn.BeginTransaction())  
             {  
                 MySqlCommand cmd = new MySqlCommand();  
                 try  
                 {  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         MySqlParameter\[\] cmdParms = (MySqlParameter\[\])myDE.Value;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter\[\])</param>  
     public static int ExecuteSqlTran(System.Collections.Generic.List<CommandInfo> cmdList)  
     {  
         using (MySqlConnection conn = new MySqlConnection(connectionString))  
         {  
             conn.Open();  
             using (MySqlTransaction trans = conn.BeginTransaction())  
             {  
                 MySqlCommand cmd = new MySqlCommand();  
                 try  
                 { int count = ;  
                     //循环  
                     foreach (CommandInfo myDE in cmdList)  
                     {  
                         string cmdText = myDE.CommandText;  
                         MySqlParameter\[\] cmdParms = (MySqlParameter\[\])myDE.Parameters;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  

                         if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                         {  
                             if (myDE.CommandText.ToLower().IndexOf("count(") == -)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  

                             object obj = cmd.ExecuteScalar();  
                             bool isHave = false;  
                             if (obj == null && obj == DBNull.Value)  
                             {  
                                 isHave = false;  
                             }  
                             isHave = Convert.ToInt32(obj) > ;  

                             if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  
                             if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                             {  
                                 trans.Rollback();  
                                 return ;  
                             }  
                             continue;  
                         }  
                         int val = cmd.ExecuteNonQuery();  
                         count += val;  
                         if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == )  
                         {  
                             trans.Rollback();  
                             return ;  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                     return count;  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter\[\])</param>  
     public static void ExecuteSqlTranWithIndentity(System.Collections.Generic.List<CommandInfo> SQLStringList)  
     {  
         using (MySqlConnection conn = new MySqlConnection(connectionString))  
         {  
             conn.Open();  
             using (MySqlTransaction trans = conn.BeginTransaction())  
             {  
                 MySqlCommand cmd = new MySqlCommand();  
                 try  
                 {  
                     int indentity = ;  
                     //循环  
                     foreach (CommandInfo myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.CommandText;  
                         MySqlParameter\[\] cmdParms = (MySqlParameter\[\])myDE.Parameters;  
                         foreach (MySqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.InputOutput)  
                             {  
                                 q.Value = indentity;  
                             }  
                         }  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         foreach (MySqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.Output)  
                             {  
                                 indentity = Convert.ToInt32(q.Value);  
                             }  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的MySqlParameter\[\])</param>  
     public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)  
     {  
         using (MySqlConnection conn = new MySqlConnection(connectionString))  
         {  
             conn.Open();  
             using (MySqlTransaction trans = conn.BeginTransaction())  
             {  
                 MySqlCommand cmd = new MySqlCommand();  
                 try  
                 {  
                     int indentity = ;  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         MySqlParameter\[\] cmdParms = (MySqlParameter\[\])myDE.Value;  
                         foreach (MySqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.InputOutput)  
                             {  
                                 q.Value = indentity;  
                             }  
                         }  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         foreach (MySqlParameter q in cmdParms)  
                         {  
                             if (q.Direction == ParameterDirection.Output)  
                             {  
                                 indentity = Convert.ToInt32(q.Value);  
                             }  
                         }  
                         cmd.Parameters.Clear();  
                     }  
                     trans.Commit();  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString, params MySqlParameter\[\] cmdParms)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             using (MySqlCommand cmd = new MySqlCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     object obj = cmd.ExecuteScalar();  
                     cmd.Parameters.Clear();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException e)  
                 {  
                     throw e;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行查询语句,返回MySqlDataReader ( 注意:调用该方法后,一定要对MySqlDataReader进行Close )  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>MySqlDataReader</returns>  
     public static MySqlDataReader ExecuteReader(string SQLString, params MySqlParameter\[\] cmdParms)  
     {  
         MySqlConnection connection = new MySqlConnection(connectionString);  
         MySqlCommand cmd = new MySqlCommand();  
         try  
         {  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             MySqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
             cmd.Parameters.Clear();  
             return myReader;  
         }  
         catch (MySql.Data.MySqlClient.MySqlException e)  
         {  
             throw e;  
         }  
         //          finally  
         //          {  
         //              cmd.Dispose();  
         //              connection.Close();  
         //          }     

     }  

     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString, params MySqlParameter\[\] cmdParms)  
     {  
         using (MySqlConnection connection = new MySqlConnection(connectionString))  
         {  
             MySqlCommand cmd = new MySqlCommand();  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds, "ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch (MySql.Data.MySqlClient.MySqlException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, string cmdText, MySqlParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  

             foreach (MySqlParameter parameter in cmdParms)  
             {  
                 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&  
                     (parameter.Value == null))  
                 {  
                     parameter.Value = DBNull.Value;  
                 }  
                 cmd.Parameters.Add(parameter);  
             }  
         }  
     }  

     #endregion  

 }  

}

DBHelperMySQL (注意:注意类库引用)

四、其他

using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.OleDb;
using System.Configuration;

namespace Maticsoft.DBUtility
{
///

/// 数据访问基础类(基于OleDb) /// 可以用户可以修改满足自己项目的需要。 ///
public abstract class DbHelperOleDb
{
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
public static string connectionString = "连接字符串";
public DbHelperOleDb()
{
}

     #region 公用方法  

     public static int GetMaxID(string FieldName, string TableName)  
     {  
         string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
         object obj = DbHelperSQL.GetSingle(strsql);  
         if (obj == null)  
         {  
             return ;  
         }  
         else  
         {  
             return int.Parse(obj.ToString());  
         }  
     }  
     public static bool Exists(string strSql)  
     {  
         object obj = DbHelperSQL.GetSingle(strSql);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  
     public static bool Exists(string strSql, params OleDbParameter\[\] cmdParms)  
     {  
         object obj = GetSingle(strSql, cmdParms);  
         int cmdresult;  
         if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
         {  
             cmdresult = ;  
         }  
         else  
         {  
             cmdresult = int.Parse(obj.ToString());  
         }  
         if (cmdresult == )  
         {  
             return false;  
         }  
         else  
         {  
             return true;  
         }  
     }  

     #endregion  

     #region  执行简单SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     int rows = cmd.ExecuteNonQuery();  
                     return rows;  
                 }  
                 catch (System.Data.OleDb.OleDbException E)  
                 {  
                     connection.Close();  
                     throw new Exception(E.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">多条SQL语句</param>  
     public static void ExecuteSqlTran(ArrayList SQLStringList)  
     {  
         using (OleDbConnection conn = new OleDbConnection(connectionString))  
         {  
             conn.Open();  
             OleDbCommand cmd = new OleDbCommand();  
             cmd.Connection = conn;  
             OleDbTransaction tx = conn.BeginTransaction();  
             cmd.Transaction = tx;  
             try  
             {  
                 for (int n = ; n < SQLStringList.Count; n++)  
                 {  
                     string strsql = SQLStringList\[n\].ToString();  
                     if (strsql.Trim().Length > )  
                     {  
                         cmd.CommandText = strsql;  
                         cmd.ExecuteNonQuery();  
                     }  
                 }  
                 tx.Commit();  
             }  
             catch (System.Data.OleDb.OleDbException E)  
             {  
                 tx.Rollback();  
                 throw new Exception(E.Message);  
             }  
         }  
     }  
     /// <summary>  
     /// 执行带一个存储过程参数的的SQL语句。  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, string content)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             OleDbCommand cmd = new OleDbCommand(SQLString, connection);  
             System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@content", OleDbType.VarChar);  
             myParameter.Value = content;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.OleDb.OleDbException E)  
             {  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  
     /// <summary>  
     /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
     /// </summary>  
     /// <param name="strSQL">SQL语句</param>  
     /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSqlInsertImg(string strSQL, byte\[\] fs)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             OleDbCommand cmd = new OleDbCommand(strSQL, connection);  
             System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@fs", OleDbType.Binary);  
             myParameter.Value = fs;  
             cmd.Parameters.Add(myParameter);  
             try  
             {  
                 connection.Open();  
                 int rows = cmd.ExecuteNonQuery();  
                 return rows;  
             }  
             catch (System.Data.OleDb.OleDbException E)  
             {  
                 throw new Exception(E.Message);  
             }  
             finally  
             {  
                 cmd.Dispose();  
                 connection.Close();  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))  
             {  
                 try  
                 {  
                     connection.Open();  
                     object obj = cmd.ExecuteScalar();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.OleDb.OleDbException e)  
                 {  
                     connection.Close();  
                     throw new Exception(e.Message);  
                 }  
             }  
         }  
     }  
     /// <summary>  
     /// 执行查询语句,返回OleDbDataReader  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>OleDbDataReader</returns>  
     public static OleDbDataReader ExecuteReader(string strSQL)  
     {  
         OleDbConnection connection = new OleDbConnection(connectionString);  
         OleDbCommand cmd = new OleDbCommand(strSQL, connection);  
         try  
         {  
             connection.Open();  
             OleDbDataReader myReader = cmd.ExecuteReader();  
             return myReader;  
         }  
         catch (System.Data.OleDb.OleDbException e)  
         {  
             throw new Exception(e.Message);  
         }  

     }  
     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             DataSet ds = new DataSet();  
             try  
             {  
                 connection.Open();  
                 OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);  
                 command.Fill(ds, "ds");  
             }  
             catch (System.Data.OleDb.OleDbException ex)  
             {  
                 throw new Exception(ex.Message);  
             }  
             return ds;  
         }  
     }  

     #endregion  

     #region 执行带参数的SQL语句  

     /// <summary>  
     /// 执行SQL语句,返回影响的记录数  
     /// </summary>  
     /// <param name="SQLString">SQL语句</param>  
     /// <returns>影响的记录数</returns>  
     public static int ExecuteSql(string SQLString, params OleDbParameter\[\] cmdParms)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             using (OleDbCommand cmd = new OleDbCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     int rows = cmd.ExecuteNonQuery();  
                     cmd.Parameters.Clear();  
                     return rows;  
                 }  
                 catch (System.Data.OleDb.OleDbException E)  
                 {  
                     throw new Exception(E.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行多条SQL语句,实现数据库事务。  
     /// </summary>  
     /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的OleDbParameter\[\])</param>  
     public static void ExecuteSqlTran(Hashtable SQLStringList)  
     {  
         using (OleDbConnection conn = new OleDbConnection(connectionString))  
         {  
             conn.Open();  
             using (OleDbTransaction trans = conn.BeginTransaction())  
             {  
                 OleDbCommand cmd = new OleDbCommand();  
                 try  
                 {  
                     //循环  
                     foreach (DictionaryEntry myDE in SQLStringList)  
                     {  
                         string cmdText = myDE.Key.ToString();  
                         OleDbParameter\[\] cmdParms = (OleDbParameter\[\])myDE.Value;  
                         PrepareCommand(cmd, conn, trans, cmdText, cmdParms);  
                         int val = cmd.ExecuteNonQuery();  
                         cmd.Parameters.Clear();  

                         trans.Commit();  
                     }  
                 }  
                 catch  
                 {  
                     trans.Rollback();  
                     throw;  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行一条计算查询结果语句,返回查询结果(object)。  
     /// </summary>  
     /// <param name="SQLString">计算查询结果语句</param>  
     /// <returns>查询结果(object)</returns>  
     public static object GetSingle(string SQLString, params OleDbParameter\[\] cmdParms)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             using (OleDbCommand cmd = new OleDbCommand())  
             {  
                 try  
                 {  
                     PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
                     object obj = cmd.ExecuteScalar();  
                     cmd.Parameters.Clear();  
                     if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                     {  
                         return null;  
                     }  
                     else  
                     {  
                         return obj;  
                     }  
                 }  
                 catch (System.Data.OleDb.OleDbException e)  
                 {  
                     throw new Exception(e.Message);  
                 }  
             }  
         }  
     }  

     /// <summary>  
     /// 执行查询语句,返回OleDbDataReader  
     /// </summary>  
     /// <param name="strSQL">查询语句</param>  
     /// <returns>OleDbDataReader</returns>  
     public static OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter\[\] cmdParms)  
     {  
         OleDbConnection connection = new OleDbConnection(connectionString);  
         OleDbCommand cmd = new OleDbCommand();  
         try  
         {  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             OleDbDataReader myReader = cmd.ExecuteReader();  
             cmd.Parameters.Clear();  
             return myReader;  
         }  
         catch (System.Data.OleDb.OleDbException e)  
         {  
             throw new Exception(e.Message);  
         }  

     }  

     /// <summary>  
     /// 执行查询语句,返回DataSet  
     /// </summary>  
     /// <param name="SQLString">查询语句</param>  
     /// <returns>DataSet</returns>  
     public static DataSet Query(string SQLString, params OleDbParameter\[\] cmdParms)  
     {  
         using (OleDbConnection connection = new OleDbConnection(connectionString))  
         {  
             OleDbCommand cmd = new OleDbCommand();  
             PrepareCommand(cmd, connection, null, SQLString, cmdParms);  
             using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))  
             {  
                 DataSet ds = new DataSet();  
                 try  
                 {  
                     da.Fill(ds, "ds");  
                     cmd.Parameters.Clear();  
                 }  
                 catch (System.Data.OleDb.OleDbException ex)  
                 {  
                     throw new Exception(ex.Message);  
                 }  
                 return ds;  
             }  
         }  
     }  

     private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter\[\] cmdParms)  
     {  
         if (conn.State != ConnectionState.Open)  
             conn.Open();  
         cmd.Connection = conn;  
         cmd.CommandText = cmdText;  
         if (trans != null)  
             cmd.Transaction = trans;  
         cmd.CommandType = CommandType.Text;//cmdType;  
         if (cmdParms != null)  
         {  
             foreach (OleDbParameter parm in cmdParms)  
                 cmd.Parameters.Add(parm);  
         }  
     }  

     #endregion  

 }  

}

DBHelperOleDB