zoukankan      html  css  js  c++  java
  • [C#]分享一个以前的项目使用的DataBaseAccess类

    最近在整理以前的资料时,看到了以前我们在项目中经常用的一个数据库访问类,虽然现在已经可以用代码生成工具生成比较完整的数据库访问类,但是这个类在我们以前的项目中久经考验,所以我觉得还是比较好用,废话不多说了,上代码:

    //======================================================================
    //
    //        filename : DataBaseAccess.cs
    //
    //        description:  1. data base access operation class DataBaseAccess.
    //                      2. data base access operation help class SQLHelper.
    //
    //      
    //
    //======================================================================

    using System;
    using System.Data;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Configuration;
    using System.IO;
    using System.Collections;
    using System.Collections.Generic;
    using System.Reflection;
    using System.Xml;

    namespace DAL
    {
        #region Database Access
        /// <summary>
        /// DataBase Operate Class DataBaseAccess
        /// </summary>
        public class DataBaseAccess
        {


            /// <summary>
            /// DataBase Connection
            /// </summary>
            private SqlConnection conn = new SqlConnection(SQLHelper.StrConn);
            /// <summary>
            /// DataBase Connection
            /// </summary>
            public SqlConnection Conn
            {
                get
                {
                    return conn;
                }
            }
            /// <summary>
            /// Construct
            /// </summary>
            public DataBaseAccess()
            {

            }

            /// <summary>
            /// Destruct
            /// </summary>
            ~DataBaseAccess()
            {
                CloseDB();
            }

            #region "***** Debug Configuration *****"        
            /// <summary>
            ///Judge whether the state is Debug
            /// </summary>
            /// <returns>if the state is Debug return true,else false</returns>
            private bool JudgeDebug()
            {
                bool bIsDebug = false;

                #if DEBUG

                string strIsDebug = ConfigurationManager.AppSettings["IsDebug"];
                bIsDebug = ((bIsDebug || (strIsDebug != null && strIsDebug.Equals("true"))) ? true : false);

                #endif

                return bIsDebug;
            }        

            /// <summary>
            /// Output the Debug Information
            /// </summary>
            /// <param name="objDebugInfo">Debug Information</param>
            private void debug(object objDebugInfo)
            {
                #if DEBUG
                //if open debug,output the debug information into the file(the Directory in which Current programe run and the file name is DebugInfo\[日期].ini)
                if (JudgeDebug())
                {
                    string strPath = System.Environment.CurrentDirectory + "\\DebugInfo\\";
                    if (!Directory.Exists(strPath))
                    {
                        Directory.CreateDirectory(strPath);
                    }

                    try
                    {
                        StreamWriter swDebugOutput = new StreamWriter(strPath + DateTime.Now.ToLongDateString() + ".ini", true, System.Text.Encoding.Unicode);
                        swDebugOutput.Write("time:" + DateTime.Now.ToString() + "\r\n" + objDebugInfo + "\r\n\r\n");
                        swDebugOutput.Close();
                        swDebugOutput.Dispose();
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }                
                }

                #endif
            }

            #endregion

            #region "***** Database Basic Operation *****"

            #region ExecuteSql

            /// <summary>
            /// Execute SQL(insert,delete,update)command,return the number of the rows which are affected
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <returns>return the number of the rows which are affected</returns>        
            public int ExecuteSql(SqlCommand sqlcmd)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSql(SqlCommand),Return Type:int ");
                this.conn.Open();
                sqlcmd.Connection = this.conn;
                SqlTransaction trans = this.conn.BeginTransaction();
                sqlcmd.Transaction = trans;
                try
                {                
                    debug("Execute SQL Command:" + sqlcmd.CommandText);
                    int iReturnValue = sqlcmd.ExecuteNonQuery();
                    trans.Commit();
                    return iReturnValue;
                }
                catch (SqlException ex)
                {                
                    debug("Exception Information:" + ex.ToString());
                    trans.Rollback();
                    throw ex;
                }
                finally
                {
                    sqlcmd.Dispose();
                    this.conn.Close();
                }
            }

            /// <summary>
            /// Execute SQL(insert,delete,update)command,return the number of the rows which are affected
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <returns>return the number of the rows which are affected</returns>    
            public int ExecuteSql(string strSql)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSql(string),Return Type:int ");
                return ExecuteSql(new SqlCommand(strSql,this.conn));
            }

            /// <summary>
            /// Execute SQL(insert,delete,update)command,return the number of the rows which are affected.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameter</param>
            /// <returns>return the number of the rows which are affected</returns>
            public int ExecuteSql(string strSql, SqlParameter[] sqlParameters)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSql(string, SqlParameter[]),Return Type:int ");
                return ExecuteSql(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn));
            }

            #endregion

            #region ExecuteSqlDic

            /// <summary>
            /// Execute mutil-SQL(insert,delete,update)command,keep an affair.
            /// </summary>
            /// <param name="sqlcmd">SQL Command collection which will be Executed</param>
            /// <param name="bNotAffectRowRollback">if true,once one SQL Execute,the result  of the execution is invalid,if false,ignore the result  and rollback.</param>
            /// <returns>return the list number of the rows which are affected</returns>        
            public List<int> ExecuteSqlDic(Dictionary<string, SqlParameter[]> dic, bool bNotAffectRowRollback)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDic(Dictionary<string, SqlParameter[]>, bool),Return Type:List<int> ");
                List<int> iReturnValueList = new List<int>();
                this.conn.Open();
                SqlTransaction trans = this.conn.BeginTransaction();
                try
                {
                    foreach (KeyValuePair<string, SqlParameter[]> kvp in dic)
                    {
                        SqlCommand sqlcmd = SQLHelper.CreateCommand(kvp.Key, kvp.Value, this.conn);
                        sqlcmd.Transaction = trans;
                        debug("Execute SQL Command:" + sqlcmd.CommandText);
                        int iAffectRow=sqlcmd.ExecuteNonQuery();
                        iReturnValueList.Add(iAffectRow);
                        if (bNotAffectRowRollback && iAffectRow == 0)
                        {
                            trans.Rollback();
                            iReturnValueList.Clear();
                            return iReturnValueList;
                        }
                    }
                    trans.Commit();
                }
                catch (SqlException ex)
                {
                    debug("Exception Information:" + ex.ToString());
                    trans.Rollback();
                    throw ex;
                }
                finally
                {
                    this.conn.Close();
                }

                return iReturnValueList;
            }

            /// <summary>
            /// Execute mutil-SQL(insert,delete,update)command,keep an affair.
            /// </summary>
            /// <param name="sqlcmd">SQL Command collection which will be Executed</param>
            /// <returns>return the list number of the rows which are affected</returns>        
            public List<int> ExecuteSqlDic(Dictionary<string, SqlParameter[]> dic)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDic(Dictionary<string, SqlParameter[]>),Return Type:List<int> ");
                return ExecuteSqlDic(dic, false);
            }

            #endregion

            #region

            /// <summary>
            /// Execute SQL Command,Return single Result.
            /// </summary>
            /// <param name="sqlcmd">SQL Command collection which will be Executed</param>
            /// <returns>return single Result</returns>
            public object ExecScalar(SqlCommand sqlcmd)
            {
                debug("Now Execute DataBaseAccess's Method:ExecScalar(SqlCommand),Return Type:object ");
                sqlcmd.Connection = this.conn;
                try
                {
                    debug("Execute SQL Command:" + sqlcmd.CommandText);
                    this.conn.Open();
                    object r = sqlcmd.ExecuteScalar();
                    //if (Object.Equals(r, null))
                    //{
                    //    throw new Exception("object is null!");
                    //}
                    //else
                    //{
                    //    return r;
                    //}
                    return r;
                }
                catch (SqlException ex)
                {
                    debug("Exception Information:" + ex.ToString());
                    throw ex;
                }
                finally
                {
                    sqlcmd.Dispose();
                    this.conn.Close();
                }
            }
            
            /// <summary>
            /// Execute SQL Command,Return single Result.
            /// </summary>
            /// <param name="sqlcmd">SQL Command collection which will be Executed</param>
            /// <returns>return single Result</returns>
            public object ExecScalar(string strSql)
            {
                debug("Now Execute DataBaseAccess's Method:ExecScalar(string),Return Type:object ");
                return ExecScalar(new SqlCommand(strSql,this.conn));
            }

            /// <summary>
            /// Execute SQL Command,Return single Result.
            /// </summary>
            /// <param name="sqlcmd">SQL Command collection which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameters Collection</param>
            /// <returns>return single Result</returns>
            public object ExecScalar(string strSql, SqlParameter[] sqlParameters)
            {
                debug("Now Execute DataBaseAccess's Method:ExecScalar(string,SqlParameter[]),Return Type:object ");
                return ExecScalar(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn));
            }

            #endregion

            #region ExecScalarEx

            /// <summary>
            /// Execute SQL command,if result set has note return 1,if result set is null return 0  
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <returns>Execute SQL command,if result set has note return 1,if result set is null return 0</returns>
            public int ExecScalarEx(SqlCommand sqlcmd)
            {
                debug("Now Execute DataBaseAccess's Method:ExecScalarEx(SqlCommand),Return Type:int ");
                sqlcmd.Connection = this.conn;
                try
                {
                    debug("Execute SQL Command:" + sqlcmd.CommandText);
                    this.conn.Open();
                    SqlDataReader myDr = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);

                    if (myDr.Read())
                    {
                        return 1;
                    }
                    else
                    {
                        return 0;
                    }
                }
                catch (SqlException ex)
                {
                    debug("Exception Information:" + ex.ToString());
                    throw ex;
                }
                finally
                {
                    sqlcmd.Dispose();
                    this.conn.Close();
                }
            }

            /// <summary>
            /// Execute SQL command,if result set has note return 1,if result set is null return 0
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <returns>Execute SQL command,if result set has note return 1,if result set is null return 0</returns>        
            public int ExecScalarEx(string strSql)
            {
                debug("Now Execute DataBaseAccess's Method:ExecScalarEx(strSql),Return Type:int ");
                return ExecScalarEx(new SqlCommand(strSql, this.conn));
            }

            /// <summary>
            /// Execute SQL command,if result set has note return 1,if result set is null return 0
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Command Collection</param>
            /// <returns>Execute SQL command,if result set has note return 1,if result set is null return 0</returns>        
            public int ExecScalarEx(string strSql, SqlParameter[] sqlParameters)
            {
                debug("Now Execute DataBaseAccess's Method:ExecScalarEx(string,SqlParameter[]),Return Type:int ");
                return ExecScalarEx(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn));
            }

            #endregion

            #region ExecuteSqlDs

            /// <summary>
            /// Execute SQL Command,return DataSet.
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <param name="strTableName">table name</param>
            /// <returns>return DataSet.</returns>
            public DataSet ExecuteSqlDs(SqlCommand sqlcmd, string strTableName)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDs(SqlCommand,string),Return Type:DataSet ");
                sqlcmd.Connection = this.conn;
                SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);
                DataSet dsReturn = new DataSet();
                try
                {
                    debug("Execute SQL Command:" + sqlcmd.CommandText);
                    this.conn.Open();
                    sqlda.Fill(dsReturn, strTableName);
                    return dsReturn;           
                }
                catch (SqlException ex)
                {
                    debug("Exception information:" + ex.ToString());
                    throw ex;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlda.Dispose();
                    this.conn.Close();
                }
            }
            
            /// <summary>
            /// Execute SQL Command,return DataSet.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="strTableName">table name</param>
            /// <returns>return dataset.</returns>
            public DataSet ExecuteSqlDs(string strSql, string strTableName)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDs(string,string),Return Type:DataSet ");
                return ExecuteSqlDs(new SqlCommand(strSql, this.conn), strTableName);
            }        

            /// <summary>
            /// Execute SQL Command,return DataSet.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameter Collection</param>
            /// <param name="strTableName">table name</param>
            /// <returns>return DataSet.</returns>
            public DataSet ExecuteSqlDs(string strSql, SqlParameter[] sqlParameters, string strTableName)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDs(string,SqlParameter[],string),Return Type:DataSet ");
                return ExecuteSqlDs(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn), strTableName);
            }

            #endregion

            #region ExecuteSqlFillDs

            /// <summary>
            /// Execute SQL Command,add new resultset into current ref DataSet.
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <param name="strTableName">table name</param>
            /// <param name="dsRef">current Dataset</param>
            public void ExecuteSqlFillDs(SqlCommand sqlcmd, string strTableName, ref DataSet dsRef)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlFillDs(SqlCommand,string,ref DataSet)");
                sqlcmd.Connection = this.conn;
                SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);
                try
                {
                    debug("Execute SQL Command:" + sqlcmd.CommandText);
                    this.conn.Open();
                    sqlda.Fill(dsRef, strTableName);                      
                }
                catch (SqlException ex)
                {
                    debug("Exception information:" + ex.ToString());
                    throw ex;                
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlda.Dispose();
                    this.conn.Close();
                }
            }

            /// <summary>
            /// Execute SQL Command,add new resultset into current ref DataSet.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="strTableName">table name</param>
            /// <param name="dsRef">current Dataset</param>
            public void ExecuteSqlFillDs(string strSql, string strTableName, ref DataSet dsRef)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlFillDs(string,string,ref DataSet)");
                ExecuteSqlFillDs(new SqlCommand(strSql),strTableName, ref dsRef);
            }

            /// <summary>
            /// Execute SQL Command,add new resultset into current ref DataSet.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameters Collection</param>
            /// <param name="strTableName">table name</param>
            /// <param name="dsRef">Current Dataset</param>
            public void ExecuteSqlFillDs(string strSql, SqlParameter[] sqlParameters, string strTableName, ref DataSet dsRef)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlFillDs(string strSql, SqlParameter[], string, ref DataSet)");
                ExecuteSqlFillDs(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn), strTableName, ref dsRef);
            }

            #endregion

            #region ExecuteSqlDsEx

            /// <summary>
            ///  Define pagination(Execute SQL Command,return DataSet).
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <param name="iStartRecord">index of StartRecord</param>
            /// <param name="iMaxRecord">number of Records</param>
            /// <param name="strTableName">table name</param>
            /// <returns>return DataSet</returns>
            public DataSet ExecuteSqlDsEx(SqlCommand sqlcmd, int iStartRecord, int iMaxRecord, string strTableName)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDsEx(SqlCommand,int,int,string),Return Type:DataSet ");
                sqlcmd.Connection = this.conn;
                SqlDataAdapter sqlda = new SqlDataAdapter(sqlcmd);
                DataSet dsReapter = new DataSet();

                try
                {
                    debug("Execute SQL Command:" + sqlcmd.CommandText);
                    this.conn.Open();
                    if (iStartRecord < 0) iStartRecord = 0;
                    sqlda.Fill(dsReapter, iStartRecord, iMaxRecord, strTableName);
                    return dsReapter;
                }
                catch (SqlException ex)
                {
                    debug("Exception information:" + ex.ToString());
                    throw ex;
                }
                finally
                {
                    sqlcmd.Dispose();
                    sqlda.Dispose();
                    this.conn.Close();
                }
            }

            /// <summary>
            /// Define pagination(Execute SQL Command,return DataSet).
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="iStartRecord">index of StartRecord</param>
            /// <param name="iMaxRecord">number of Records</param>
            /// <param name="strTableName">table name</param>
            /// <returns>return DataSet.</returns>
            public DataSet ExecuteSqlDsEx(string strSql, int iStartRecord, int iMaxRecord, string strTableName)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDsEx(string,int,int,string),Return Type:DataSet ");
                return ExecuteSqlDsEx(new SqlCommand(strSql), iStartRecord, iMaxRecord, strTableName);
            }

            /// <summary>
            /// Define pagination(Execute SQL Command,return DataSet).
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameters Collection</param>
            /// <param name="iStartRecord">index of StartRecord</param>
            /// <param name="iMaxRecord">number of Records</param>
            /// <param name="strTableName">table name</param>
            /// <returns>return DataSet.</returns>
            public DataSet ExecuteSqlDsEx(string strSql, SqlParameter[] sqlParameters, int iStartRecord, int iMaxRecord, string strTableName)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDsEx(string, SqlParameter[], int, int, string),Return Type:DataSet ");
                return ExecuteSqlDsEx(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn), iStartRecord, iMaxRecord, strTableName);
            }

            #endregion

            #region ExecuteSqlDr

            /// <summary>
            /// Execute SQL Command,return SqlDataReader.
            /// </summary>
            /// <param name="sqlcmd">SQL Command which will be Executed</param>
            /// <returns>Return SqlDataReader</returns>
            public SqlDataReader ExecuteSqlDr(SqlCommand sqlcmd)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDr(SqlCommand),Return Type:SqlDataReader ");
                sqlcmd.Connection = this.conn;
                SqlDataReader sqldr;
                try
                {
                    debug("Execute SQL Command:" + sqlcmd.CommandText.ToString());
                    this.conn.Open();
                    sqldr = sqlcmd.ExecuteReader(CommandBehavior.CloseConnection);
                    return sqldr;
                }
                catch (SqlException ex)
                {
                    debug("Exception information:" + ex.ToString());
                    throw ex;
                }
                finally
                {
                    sqlcmd.Dispose();
                }
            }

            /// <summary>
            /// Execute SQL Command,return SqlDataReader.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <returns>Return SqlDataReader</returns>
            public SqlDataReader ExecuteSqlDr(string strSql)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDr(string),Return Type:SqlDataReader ");
                return ExecuteSqlDr(new SqlCommand(strSql));
            }

            /// <summary>
            /// Execute SQL Command,return SqlDataReader.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameters Collection</param>
            /// <returns>Return SqlDataReader</returns>        
            public SqlDataReader ExecuteSqlDr(string strSql, SqlParameter[] sqlParameters)
            {
                debug("Now Execute DataBaseAccess's Method:ExecuteSqlDr(string, SqlParameter[]),Return Type:SqlDataReader ");
                return ExecuteSqlDr(SQLHelper.CreateCommand(strSql, sqlParameters, this.conn));
            }

            #endregion

            #region ExecuteSqlTarn

            /// <summary>
            /// Execute SQL Command,Keep affair.
            /// </summary>
            /// <param name="strSql">SQL Command which will be Executed</param>
            /// <param name="sqlParameters">SQL Parameters Collection</param>
            public void ExecuteSqlTran(string strSql, SqlParameter[] sqlParameters)
            {
                    conn.Open();
                    SqlCommand sqlcmd = SQLHelper.CreateCommand(strSql, sqlParameters, this.conn);               
                    using(SqlTransaction sqltrans = this.conn.BeginTransaction())
                    {
                        sqlcmd.Transaction = sqltrans;    
                        try
                        {
                            sqlcmd.ExecuteNonQuery();
                            sqltrans.Commit();
                        }
                        catch (System.Data.SqlClient.SqlException E)
                        {
                            sqltrans.Rollback();
                            throw E;
                        }
                        finally
                        {
                            sqlcmd.Dispose();                       
                            this.conn.Close();
                        }
                    }           
            }

            /// <summary>
            /// execute SQL script,Keep SqlTransaction 。
            /// </summary>
            /// <param name="objSqlList">save sql command and sql parameter</param>
            public void ExecuteSqlTran(Dictionary<string ,SqlParameter []> objSqlList)
            {
                conn.Open();
                using (SqlTransaction trans = conn.BeginTransaction())
                {
                    try
                    {
                        SqlCommand sqlcmd = new SqlCommand();
                        //circulation                 
                        foreach (KeyValuePair<string, SqlParameter[]> kvp in objSqlList)
                        {
                            //the key value is by|Division ,Serial number|sql script
                            string[] tmp = kvp.Key.ToString().Split(new char[] { '|' });                        
                            string cmdText = tmp[1];
                            //get SqlParameter value
                            SqlParameter[] sqlParms = kvp.Value;
                            if (sqlParms!=null)
                                sqlcmd = SQLHelper.CreateCommand(cmdText, sqlParms, this.conn);
                            sqlcmd.Transaction = trans;
                            int val = sqlcmd.ExecuteNonQuery();
                            //clear SqlParameter
                            sqlcmd.Parameters.Clear();
                        }
                        trans.Commit();
                    }
                    catch
                    {
                        trans.Rollback();
                        throw;
                    }
                    finally
                    {                      
                        this.conn.Close();
                    }
                }

            }

            #endregion

            #endregion

            #region other

            /// <summary>
            ///Close DataBase Connection.
            /// </summary>
            public void CloseDB()
            {
                if (this.conn != null)
                {
                    if (this.conn.State != ConnectionState.Closed)
                        this.conn.Close();
                }
            }
            
            /// <summary>
            /// Dispose Resource
            /// </summary>
            public void Dispose()
            {
                if (this.conn != null)
                {
                    if (this.conn.State != ConnectionState.Closed)
                        this.conn.Close();
                    this.conn.Dispose();
                }
            }
            #endregion
        }

        #endregion


        #region DataBase Operate assistant class SQLHelper
        /// <summary>
        /// SQLHelper.
        /// </summary>
        public abstract class SQLHelper
        {
            /// <summary>
            /// DataBase ConnectionString
            /// </summary>
            public static string StrConn = ConfigurationManager.ConnectionStrings["LocalSqlServer"].ConnectionString;

            //------------------------------------------------------------------------------------------------------------

            /// <summary>
            /// Create SqlParameter.
            /// </summary>
            /// <param name="parameterName">The name of the parameter to map.</param>
            /// <param name="DbType">One of the System.Data.SqlDbType values.</param>
            /// <param name="value">The length of the parameter.</param>
            /// <returns>Return new SqlParameter.</returns>
            public static SqlParameter CreateSqlParameter(string parameterName, SqlDbType DbType, object value)
            {
                SqlParameter sqlpara = new SqlParameter(parameterName, DbType);
                sqlpara.Value = value;
                return sqlpara;
            }

            /// <summary>
            /// Create SqlParameter.
            /// </summary>
            /// <param name="parameterName">The name of the parameter to map.</param>
            /// <param name="DbType">One of the System.Data.SqlDbType values.</param>        
            /// <returns>Return new SqlParameter.</returns>
            public static SqlParameter CreateSqlParameter(string parameterName, SqlDbType DbType, int size, object value)
            {            
                SqlParameter sqlpara = new SqlParameter(parameterName, DbType, size);
                sqlpara.Value = value;
                return sqlpara;
            }


            //------------------------------------------------------------------------------------------------------------

            /// <summary>
            /// Param amortize Hashtable
            /// </summary>
            private static Hashtable htParamCache = Hashtable.Synchronized(new Hashtable());

            /// <summary>
            /// Save Parameters in Cache
            /// </summary>
            /// <param name="strCacheKey"></param>
            /// <param name="sqlParameters"></param>
            public static void CacheParameters(string strCacheKey, params SqlParameter[] sqlParameters)
            {
                SQLHelper.htParamCache[strCacheKey] = sqlParameters;
            }

            /// <summary>
            /// Get Parameters from Cache
            /// </summary>
            /// <param name="strCacheKey"></param>
            /// <returns></returns>
            public static SqlParameter[] GetCachedParameters(string strCacheKey)
            {
                SqlParameter[] sqlParameters = (SqlParameter[])SQLHelper.htParamCache[strCacheKey];
                if (sqlParameters == null)
                {
                    return null;
                }

                SqlParameter[] clonedParms = new SqlParameter[sqlParameters.Length];
                for (int i = 0, j = sqlParameters.Length; i < j; i++)
                {
                    clonedParms[i] = (SqlParameter)((ICloneable)sqlParameters[i]).Clone();
                }

                return clonedParms;
            }

            //----------------------------------------------------------------------------------------------------------------

            /// <summary>
            /// Create new SqlComand
            /// </summary>
            /// <param name="strSql"></param>        
            public static SqlCommand CreateCommand(string strSql)
            {
                SqlCommand sqlcmd = new SqlCommand(strSql);
                return sqlcmd;
            }

            /// <summary>
            /// Create new SqlComand,Set DataBase Connection
            /// </summary>
            /// <param name="strSql"></param>
            /// <param name="sqlconn"></param>
            /// <returns></returns>

            public static SqlCommand CreateCommand(string strSql, SqlConnection sqlconn)
            {
                SqlCommand sqlcmd = new SqlCommand(strSql, sqlconn);
                return sqlcmd;
            }


            /// <summary>
            /// Create new SqlComand which has Parameters
            /// </summary>
            /// <param name="strSql"></param>
            /// <param name="sqlParameters"></param>        
            public static SqlCommand CreateCommand(string strSql, SqlParameter[] sqlParameters)
            {
                SqlCommand sqlcmd = new SqlCommand(strSql);
                foreach (SqlParameter param in sqlParameters)
                {
                    sqlcmd.Parameters.Add(param);
                }
                return sqlcmd;
            }

            /// <summary>
            /// Create new SqlComand which has Parameters,Set DataBase Connection
            /// </summary>
            /// <param name="strSql"></param>
            /// <param name="conn"></param>
            /// <param name="sqlParameters"></param>        
            public static SqlCommand CreateCommand(string strSql, SqlParameter[] sqlParameters, SqlConnection sqlconn)
            {
                SqlCommand sqlcmd = new SqlCommand(strSql, sqlconn);
                foreach (SqlParameter param in sqlParameters)
                {
                    sqlcmd.Parameters.Add(param);
                }
                return sqlcmd;
            }

            /// <summary>
            /// Create new SqlComand which has Parameters,Set Stored Procedure Flag
            /// </summary>
            /// <param name="strSql"></param>
            /// <param name="sqlParameters"></param>
            /// <param name="bIsStoredProcedure"></param>
            /// <returns></returns>        
            public static SqlCommand CreateCommand(string strSql, SqlParameter[] sqlParameters, bool bIsStoredProcedure)
            {
                SqlCommand sqlcmd = new SqlCommand(strSql);

                if (bIsStoredProcedure)
                    sqlcmd.CommandType = CommandType.StoredProcedure;
                else
                    sqlcmd.CommandType = CommandType.Text;

                foreach (SqlParameter param in sqlParameters)
                {
                    sqlcmd.Parameters.Add(param);
                }
                return sqlcmd;
            }

            /// <summary>
            /// Create new SqlComand which has Parameters,Set Stored Procedure Flag and DataBase Connection
            /// </summary>
            /// <param name="strSql"></param>
            /// <param name="sqlParameters"></param>
            /// <param name="bIsStoredProcedure"></param>
            /// <returns></returns>        
            public static SqlCommand CreateCommand(string strSql, SqlParameter[] sqlParameters, bool bIsStoredProcedure, SqlConnection sqlconn)
            {
                SqlCommand sqlcmd = new SqlCommand(strSql, sqlconn);

                if (bIsStoredProcedure)
                    sqlcmd.CommandType = CommandType.StoredProcedure;
                else
                    sqlcmd.CommandType = CommandType.Text;

                foreach (SqlParameter param in sqlParameters)
                {
                    sqlcmd.Parameters.Add(param);
                }
                return sqlcmd;
            }

            /// <summary>
            /// Create new SqlDataAdapter which has Parameters and set DataBase Connection
            /// </summary>
            /// <param name="sqlda"></param>
            /// <param name="mySqlParamter"></param>
            public static SqlDataAdapter CreateDataAdapter(string strSql, SqlParameter[] sqlParameters, SqlConnection sqlconn)
            {
                SqlDataAdapter sqlda = new SqlDataAdapter(strSql, sqlconn);
                foreach (SqlParameter param in sqlParameters)
                {
                    sqlda.SelectCommand.Parameters.Add(param);
                }
                return sqlda;
            }

            /// <summary>
            /// Create new SqlDataAdapter which has Parameters,Set Stored Procedure Flag and DataBase Connection
            /// </summary>
            /// <param name="strSql"></param>
            /// <param name="mySqlParamter"></param>
            /// <param name="bIsStoredProcedure"></param>
            /// <returns></returns>
            public static SqlDataAdapter CreateDataAdapter(string strSql, SqlParameter[] sqlParameters, bool bIsStoredProcedure, SqlConnection sqlconn)
            {
                SqlDataAdapter sqlda = new SqlDataAdapter(strSql, sqlconn);

                if (bIsStoredProcedure)
                    sqlda.SelectCommand.CommandType = CommandType.StoredProcedure;
                else
                    sqlda.SelectCommand.CommandType = CommandType.Text;

                foreach (SqlParameter param in sqlParameters)
                {
                    sqlda.SelectCommand.Parameters.Add(param);
                }
                return sqlda;
            }

            /// <summary>
            /// Create SqlParameter[]
            /// </summary>
            /// <param name="sqlParameterArr"></param>
            /// <returns></returns>
            public static SqlParameter[] CreateSqlParameters(object[,] sqlParameterArr)
            {
                SqlParameter[] sqlParameters = new SqlParameter[sqlParameterArr.GetLength(0)];
                int i = 0;
                foreach (SqlParameter param in sqlParameters)
                {
                    sqlParameters[i] = new SqlParameter(Convert.ToString(sqlParameterArr[i, 0]), sqlParameterArr[i, 1]);
                    i++;
                }
                return sqlParameters;
            }

            /// <summary>
            /// add Parameters for Command
            /// </summary>
            /// <param name="sqlcmd"></param>
            /// <param name="mySqlParamter"></param>
            public static void AddCommandParams(ref SqlCommand sqlcmd, SqlParameter[] sqlParameters)
            {
                foreach (SqlParameter param in sqlParameters)
                {
                    sqlcmd.Parameters.Add(param);
                }
            }

            /// <summary>
            /// add Parameters for DataAdapter
            /// </summary>
            /// <param name="sqlda"></param>
            /// <param name="mySqlParamter"></param>
            public static void AddDataAdapterParam(ref SqlDataAdapter sqlda, SqlParameter[] sqlParameters)
            {
                foreach (SqlParameter param in sqlParameters)
                {
                    sqlda.SelectCommand.Parameters.Add(param);
                }
            }

            /// <summary>
            /// Get SQLScript
            /// </summary>
            /// <param name="strFilepath"></param>
            /// <param name="strNodePath"></param>
            public static string GetSQLScript(string strFilepath,string strNodePath)
            {
                string strSql;
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(strFilepath);
                XmlNode node = xmldoc.SelectSingleNode(strNodePath);
                strSql = node.ChildNodes[0].InnerText;
                return strSql;
            }               
        }
        #endregion
    }


  • 相关阅读:
    【C/C++】散列/算法笔记4.2
    【C/C++】PAT A1025 Ranking/算法笔记
    【科研工具】CAJViewer的一些操作
    【科研工具】知云-外文文献翻译神器
    【科研工具】流程图软件Visio Pro 2019 详细安装破解教程
    【Word】自动化参考文献-交叉引用
    【Matlab】线性调频信号LFM 仿真
    不是人人都懂的学习要点
    linux的那些事
    从一个男人身上看出他的修养和抱负
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2323357.html
Copyright © 2011-2022 走看看