• 记录C#连接数据库工具类


    一、SQL Server

    /// <summary>
        /// 数据库的通用访问代码 
        /// 此类为抽象类,
        /// 不允许实例化,在应用时直接调用即可
        /// </summary>
        public abstract class SqlHelper
        {
            /// <summary>
            /// 数据库连接字符串
            /// </summary>
    
            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 > 0 ? 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 == 0)
                    {
                        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(0);
                }
    
            }
    
            #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[0].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 }

      多数据库可使用DbHelperSQLP来实现

    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  
    {  
        /// <summary>  
        /// 数据访问抽象基础类  
        /// </summary>  
        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) > 0;  
            }  
            public static int GetMaxID(string FieldName, string TableName)  
            {  
                string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
                object obj = GetSingle(strsql);  
                if (obj == null)  
                {  
                    return 1;  
                }  
                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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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(") == -1)  
                                {  
                                    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) > 0;  
                                if (isHave)  
                                {  
                                    //引发事件  
                                    myDE.OnSolicitationEvent();  
                                }  
                            }  
                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                            {  
                                if (myDE.CommandText.ToLower().IndexOf("count(") == -1)  
                                {  
                                    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) > 0;  
      
                                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 == 0)  
                            {  
                                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 1;  
                    }  
                    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 = 0;  
                        for (int n = 0; n < SQLStringList.Count; n++)  
                        {  
                            string strsql = SQLStringList[n];  
                            if (strsql.Trim().Length > 1)  
                            {  
                                cmd.CommandText = strsql;  
                                count += cmd.ExecuteNonQuery();  
                            }  
                        }  
                        tx.Commit();  
                        return count;  
                    }  
                    catch  
                    {  
                        tx.Rollback();  
                        return 0;  
                    }  
                }  
            }  
            /// <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 = 0;  
                            //循环  
                            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(") == -1)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
      
                                    object obj = cmd.ExecuteScalar();  
                                    bool isHave = false;  
                                    if (obj == null && obj == DBNull.Value)  
                                    {  
                                        isHave = false;  
                                    }  
                                    isHave = Convert.ToInt32(obj) > 0;  
      
                                    if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
                                    if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
                                    continue;  
                                }  
                                int val = cmd.ExecuteNonQuery();  
                                count += val;  
                                if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)  
                                {  
                                    trans.Rollback();  
                                    return 0;  
                                }  
                                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 = 0;  
                            //循环  
                            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 = 0;  
                            //循环  
                            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, 4, ParameterDirection.ReturnValue,  
                    false, 0, 0, string.Empty, DataRowVersion.Default, null));  
                return command;  
            }  
            #endregion  
      
        }  
      
    }  
    
    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  
    {  
        /// <summary>  
        /// 数据访问类,可用于访问不同数据库  
        /// </summary>  
        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) > 0;  
            }  
            public int GetMaxID(string FieldName, string TableName)  
            {  
                string strsql = "select max(" + FieldName + ")+1 from " + TableName;  
                object obj = GetSingle(strsql);  
                if (obj == null)  
                {  
                    return 1;  
                }  
                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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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(") == -1)  
                                {  
                                    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) > 0;  
                                if (isHave)  
                                {  
                                    //引发事件  
                                    myDE.OnSolicitationEvent();  
                                }  
                            }  
                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                            {  
                                if (myDE.CommandText.ToLower().IndexOf("count(") == -1)  
                                {  
                                    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) > 0;  
      
                                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 == 0)  
                            {  
                                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 1;  
                    }  
                    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 = 0;  
                        for (int n = 0; n < SQLStringList.Count; n++)  
                        {  
                            string strsql = SQLStringList[n];  
                            if (strsql.Trim().Length > 1)  
                            {  
                                cmd.CommandText = strsql;  
                                count += cmd.ExecuteNonQuery();  
                            }  
                        }  
                        tx.Commit();  
                        return count;  
                    }  
                    catch  
                    {  
                        tx.Rollback();  
                        return 0;  
                    }  
                }  
            }  
            /// <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 = 0;  
                            //循环  
                            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(") == -1)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
      
                                    object obj = cmd.ExecuteScalar();  
                                    bool isHave = false;  
                                    if (obj == null && obj == DBNull.Value)  
                                    {  
                                        isHave = false;  
                                    }  
                                    isHave = Convert.ToInt32(obj) > 0;  
      
                                    if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
                                    if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
                                    continue;  
                                }  
                                int val = cmd.ExecuteNonQuery();  
                                count += val;  
                                if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)  
                                {  
                                    trans.Rollback();  
                                    return 0;  
                                }  
                                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 = 0;  
                            //循环  
                            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 = 0;  
                            //循环  
                            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, 4, ParameterDirection.ReturnValue,  
                    false, 0, 0, string.Empty, DataRowVersion.Default, null));  
                return command;  
            }  
            #endregion  
      
        }  
      
    }  
    

    二、SQLite

    using System;
    using System.Collections;
    using System.Collections.Specialized;
    using System.Data;
    using System.Configuration;
    using System.Data.SQLite;
    using System.IO;
    
    namespace WpfApp
    {
        /// <summary>  
        /// 数据访问基础类(基于SQLite)  
        /// 可以用户可以修改满足自己项目的需要。  
        /// </summary>  
        public abstract class DbHelperSQLite
        {
            //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.       
            private static string databaseName = "base.db";
            private static string connectionString;
            static DbHelperSQLite()
            {
                connectionString = $"Data Source=|DataDirectory|\{databaseName};Version=3;";
    
                InitDB(databaseName);
            }
    
            /// <summary>
            /// 初始化数据库
            /// </summary>
            /// <param name="dbName"></param>
            public static void InitDB(string dbName)
            {
                if (!File.Exists(dbName))
                {
                    try
                    {
                        SQLiteConnection.CreateFile(dbName);
                    }
                    catch (Exception ex)
                    {
                    }
                }
            }
    
            /// <summary>
            /// 初始化表
            /// </summary>
            /// <param name="tableName"></param>
            /// <param name="createTable"></param>
            public static void InitTable(string tableName, string createTable)
            {
                try
                {
                    string sql = $"SELECT * FROM sqlite_master WHERE type='table' AND name='{tableName}'";
                    var ds = Query(sql);
                    if (ds != null && ds.Tables[0].Rows.Count > 0)
                    {
                        var createsql = ds.Tables[0].Rows[0]["sql"].ToString();
                        if (createTable != createsql)
                        {
                            ExecuteSql($"DROP TABLE {tableName}");
                            ExecuteSql(createTable);
                        }
                    }
                    else
                    {
                        ExecuteSql(createTable);
                    }
                }
                catch (Exception ex)
                {
    
                }
            }
    
            #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 1;
                }
                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 = 0;
                }
                else
                {
                    cmdresult = int.Parse(obj.ToString());
                }
                if (cmdresult == 0)
                {
                    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 = 0;
                }
                else
                {
                    cmdresult = int.Parse(obj.ToString());
                }
                if (cmdresult == 0)
                {
                    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 = 0; n < SQLStringList.Count; n++)
                        {
                            string strsql = SQLStringList[n].ToString();
                            if (strsql.Trim().Length > 1)
                            {
                                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
    
        }
    }
    

      

    三、Oracle

    using System;  
    using System.Collections;  
    using System.Collections.Specialized;  
    using System.Data;  
    using System.Data.OracleClient;  
    using System.Configuration;  
      
    namespace Maticsoft.DBUtility  
    {  
        /// <summary>  
        /// 数据访问基础类(基于Oracle)  
        /// 可以用户可以修改满足自己项目的需要。  
        /// </summary>  
        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 1;  
                }  
                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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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=0;n<SQLStringList.Count;n++)  
                        {  
                            string strsql=SQLStringList[n].ToString();  
                            if (strsql.Trim().Length>1)  
                            {  
                                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, 4, ParameterDirection.ReturnValue,  
                    false,0,0,string.Empty,DataRowVersion.Default,null ));  
                return command;  
            }  
            #endregion    
      
        }  
    }  
    

      

    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0, 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(") == -1)  
                                    {  
                                        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) > 0;  
      
                                    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 == 0)  
                                {  
                                    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();  
                            }  
                    }  
                }  
            }         
        }  
    }  
    

    四、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  
    {  
        /// <summary>  
        /// 数据访问抽象基础类  
        /// </summary>  
        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 1;  
                }  
                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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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(") == -1)  
                                {  
                                    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) > 0;  
                                if (isHave)  
                                {  
                                    //引发事件  
                                    myDE.OnSolicitationEvent();  
                                }  
                            }  
                            if (myDE.EffentNextType == EffentNextType.WhenHaveContine || myDE.EffentNextType == EffentNextType.WhenNoHaveContine)  
                            {  
                                if (myDE.CommandText.ToLower().IndexOf("count(") == -1)  
                                {  
                                    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) > 0;  
      
                                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 == 0)  
                            {  
                                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 1;  
                    }  
                    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 = 0;  
                        for (int n = 0; n < SQLStringList.Count; n++)  
                        {  
                            string strsql = SQLStringList[n];  
                            if (strsql.Trim().Length > 1)  
                            {  
                                cmd.CommandText = strsql;  
                                count += cmd.ExecuteNonQuery();  
                            }  
                        }  
                        tx.Commit();  
                        return count;  
                    }  
                    catch  
                    {  
                        tx.Rollback();  
                        return 0;  
                    }  
                }  
            }  
            /// <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 = 0;  
                            //循环  
                            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(") == -1)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
      
                                    object obj = cmd.ExecuteScalar();  
                                    bool isHave = false;  
                                    if (obj == null && obj == DBNull.Value)  
                                    {  
                                        isHave = false;  
                                    }  
                                    isHave = Convert.ToInt32(obj) > 0;  
      
                                    if (myDE.EffentNextType == EffentNextType.WhenHaveContine && !isHave)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
                                    if (myDE.EffentNextType == EffentNextType.WhenNoHaveContine && isHave)  
                                    {  
                                        trans.Rollback();  
                                        return 0;  
                                    }  
                                    continue;  
                                }  
                                int val = cmd.ExecuteNonQuery();  
                                count += val;  
                                if (myDE.EffentNextType == EffentNextType.ExcuteEffectRows && val == 0)  
                                {  
                                    trans.Rollback();  
                                    return 0;  
                                }  
                                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 = 0;  
                            //循环  
                            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 = 0;  
                            //循环  
                            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  
           
        }  
      
    }  
    

    五、其他

    using System;  
    using System.Collections;  
    using System.Collections.Specialized;  
    using System.Data;  
    using System.Data.OleDb;  
    using System.Configuration;  
      
    namespace Maticsoft.DBUtility  
    {  
        /// <summary>  
        /// 数据访问基础类(基于OleDb)   
        /// 可以用户可以修改满足自己项目的需要。  
        /// </summary>  
        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 1;  
                }  
                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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0;  
                }  
                else  
                {  
                    cmdresult = int.Parse(obj.ToString());  
                }  
                if (cmdresult == 0)  
                {  
                    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 = 0; n < SQLStringList.Count; n++)  
                        {  
                            string strsql = SQLStringList[n].ToString();  
                            if (strsql.Trim().Length > 1)  
                            {  
                                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  
      
        }  
    }  
    

     转载:https://www.cnblogs.com/694579350liuq/p/7080677.html

  • 相关阅读:
    POJ 3630 Phone List/POJ 1056 【字典树】
    HDU 1074 Doing Homework【状态压缩DP】
    POJ 1077 Eight【八数码问题】
    状态压缩 POJ 1185 炮兵阵地【状态压缩DP】
    POJ 1806 Manhattan 2025
    POJ 3667 Hotel【经典的线段树】
    状态压缩 POJ 3254 Corn Fields【dp 状态压缩】
    ZOJ 3468 Dice War【PD求概率】
    POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
    POJ 3735 Training little cats【矩阵的快速求幂】
  • 原文地址:https://www.cnblogs.com/chenbingquan/p/10869172.html
Copyright © 2020-2023  润新知