zoukankan      html  css  js  c++  java
  • SQLiteHelper

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SQLite;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace BaseComm
    {
    
        #region SQLiteHelper
        
        public class SQLiteHelper
        {
    
            #region DECLARATIONS
    
            private SQLiteConnection oConnection;
            private ConnectionState oConnectionState = ConnectionState.Closed;
            public SQLiteCommand oCommand;
            private SQLiteParameter oParameter;
            private SQLiteTransaction oTransaction;
            private bool mblTransaction;
            public int ConnectTimeOut = 10;//CommandTimeout = 180;
    
            private string S_CONNECTION;
            private string S_PROVIDER;
    
            #endregion
    
            #region ENUMERATORS
    
            public enum TransactionType : uint
            {
                Open = 1,
                Commit = 2,
                Rollback = 3
            }
    
            public enum CZstatus : uint
            {
                New = 1,
                Edit = 2
            }
    
    
            #endregion
    
    
    
            #region CONSTRUCTOR
    
            public SQLiteHelper(string connectionString)
            {
                this.S_CONNECTION = connectionString;
            }
    
            #endregion
    
            #region DESTRUCTOR
    
            ~SQLiteHelper()
            {
                //oFactory = null;
            }
    
            #endregion
    
            #region CONNECTIONS
    
            /// <summary>
            ///Description	    :	This function is used to Open Database Connection
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	NA
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            public void EstablishFactoryConnection()
            {
                /*
                // This check is not required as it will throw "Invalid Provider Exception" on the contructor itself.
                if (0 == DbProviderFactories.GetFactoryClasses().Select("InvariantName='" + S_PROVIDER + "'").Length)
                    throw new Exception("Invalid Provider");
                */
                oConnection = new SQLiteConnection(this.S_CONNECTION);////oFactory.CreateConnection();
    
                if (oConnection.State == ConnectionState.Closed)
                {
                    oConnection.ConnectionString = S_CONNECTION;
                    oConnection.Open();
                    oConnectionState = ConnectionState.Open;
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to Close Database Connection
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	NA
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            public void CloseFactoryConnection()
            {
                //check for an open connection            
                try
                {
                    if (oConnection.State == ConnectionState.Open)
                    {
                        oConnection.Close();
                        oConnectionState = ConnectionState.Closed;
                    }
                }
                catch (SQLiteException oDbErr)
                {
                    //catch any SQL server data provider generated error messag
                    throw new Exception(oDbErr.Message);
                }
                catch (System.NullReferenceException oNullErr)
                {
                    throw new Exception(oNullErr.Message);
                }
                finally
                {
                    if (null != oConnection)
                        oConnection.Dispose();
                }
            }
    
            #endregion
    
            #region TRANSACTION
    
            /// <summary>
            ///Description	    :	This function is used to Handle Transaction Events
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction Event Type
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            public void TransactionHandler(TransactionType veTransactionType)
            {
                switch (veTransactionType)
                {
                    case TransactionType.Open:  //open a transaction
                        try
                        {
                            oTransaction = oConnection.BeginTransaction();
                            mblTransaction = true;
                        }
                        catch (InvalidOperationException oErr)
                        {
                            throw new Exception("@TransactionHandler - " + oErr.Message);
                        }
                        break;
    
                    case TransactionType.Commit:  //commit the transaction
                        if (null != oTransaction.Connection)
                        {
                            try
                            {
                                oTransaction.Commit();
                                mblTransaction = false;
                            }
                            catch (InvalidOperationException oErr)
                            {
                                throw new Exception("@TransactionHandler - " + oErr.Message);
                            }
                        }
                        break;
    
                    case TransactionType.Rollback:  //rollback the transaction
                        try
                        {
                            if (mblTransaction)
                            {
                                oTransaction.Rollback();
                            }
                            mblTransaction = false;
                        }
                        catch (InvalidOperationException oErr)
                        {
                            throw new Exception("@TransactionHandler - " + oErr.Message);
                        }
                        break;
                }
    
            }
    
            #endregion
    
            #region COMMANDS
    
            #region PARAMETERLESS METHODS
    
            /// <summary>
            ///Description	    :	This function is used to Prepare Command For Execution
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	NA
            ///Comments			:	Has to be changed/removed if object based array concept is removed.
            /// </summary>
            private void PrepareCommand(bool blTransaction, CommandType cmdType, string cmdText)
            {
    
                if (oConnection.State != ConnectionState.Open)
                {
                    oConnection.ConnectionString = S_CONNECTION;
                    oConnection.Open();
                    oConnectionState = ConnectionState.Open;
                }
    
                if (null == oCommand)
                {
                    oCommand = new SQLiteCommand(this.oConnection);
                    oCommand.CommandTimeout = this.ConnectTimeOut;
                }
    
                oCommand.Connection = oConnection;
                oCommand.CommandText = cmdText;
                oCommand.CommandType = cmdType;
    
                if (blTransaction)
                    oCommand.Transaction = oTransaction;
            }
    
            #endregion
    
            #region OBJECT BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to Prepare Command For Execution
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            private void PrepareCommand(bool blTransaction, CommandType cmdType, string cmdText, object[,] cmdParms)
            {
    
                if (oConnection.State != ConnectionState.Open)
                {
                    oConnection.ConnectionString = S_CONNECTION;
                    oConnection.Open();
                    oConnectionState = ConnectionState.Open;
                }
    
                if (null == oCommand)
                    oCommand = new SQLiteCommand(this.oConnection);
    
                oCommand.Connection = oConnection;
                oCommand.CommandText = cmdText;
                oCommand.CommandType = cmdType;
    
                if (blTransaction)
                    oCommand.Transaction = oTransaction;
    
                if (null != cmdParms)
                    CreateDBParameters(cmdParms);
            }
    
            #endregion
    
            #region STRUCTURE BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to Prepare Command For Execution
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            private void PrepareCommand(bool blTransaction, CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
    
                if (oConnection.State != ConnectionState.Open)
                {
                    oConnection.ConnectionString = S_CONNECTION;
                    oConnection.Open();
                    oConnectionState = ConnectionState.Open;
                }
    
                oCommand = new SQLiteCommand(this.oConnection);
                oCommand.Connection = oConnection;
                oCommand.CommandText = cmdText;
                oCommand.CommandType = cmdType;
    
                if (blTransaction)
                    oCommand.Transaction = oTransaction;
    
                if (null != cmdParms)
                    CreateDBParameters(cmdParms);
            }
    
            #endregion
    
            #endregion
    
            #region PARAMETER METHODS
    
            #region OBJECT BASED
    
            /// <summary>
            ///Description	    :	This function is used to Create Parameters for the Command For Execution
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	2-Dimensional Parameter Array
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            private void CreateDBParameters(object[,] colParameters)
            {
                for (int i = 0; i < colParameters.Length / 2; i++)
                {
                    oParameter = oCommand.CreateParameter();
                    oParameter.ParameterName = colParameters[i, 0].ToString();
                    oParameter.Value = colParameters[i, 1];
                    oCommand.Parameters.Add(oParameter);
                }
            }
    
            #endregion
    
            #region STRUCTURE BASED
    
            /// <summary>
            ///Description	    :	This function is used to Create Parameters for the Command For Execution
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	2-Dimensional Parameter Array
            ///OutPut			:	NA
            ///Comments			:	
            /// </summary>
            private void CreateDBParameters(Parameters[] colParameters)
            {
                for (int i = 0; i < colParameters.Length; i++)
                {
                    Parameters oParam = (Parameters)colParameters[i];
    
                    oParameter = oCommand.CreateParameter();
                    oParameter.ParameterName = oParam.ParamName;
                    oParameter.Value = oParam.ParamValue;
                    oParameter.Direction = oParam.ParamDirection;
                    oCommand.Parameters.Add(oParameter);
    
                }
            }
    
            #endregion
    
            #endregion
    
            #region EXCEUTE METHODS
    
            #region PARAMETERLESS METHODS
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            ///                     Has to be changed/removed if object based array concept is removed.
            /// </summary>
            public int ExecuteNonQuery(CommandType cmdType, string cmdText)
            {
                try
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText);
                    return oCommand.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, 2-Dimensional Parameter Array, Clear Paramaeters
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            ///                     Has to be changed/removed if object based array concept is removed.
            /// </summary>
            public int ExecuteNonQuery(bool blTransaction, CommandType cmdType, string cmdText)
            {
                try
                {
                    PrepareCommand(blTransaction, cmdType, cmdText);
                    int val = oCommand.ExecuteNonQuery();
    
                    return val;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            #endregion
    
            #region OBJECT BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array, Clear Parameters
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            /// </summary>
            public int ExecuteNonQuery(CommandType cmdType, string cmdText, object[,] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Count of Records Affected
            ///Comments			:	Overloaded method. 
            /// </summary>
            public int ExecuteNonQuery(CommandType cmdType, string cmdText, object[,] cmdParms)
            {
                return ExecuteNonQuery(cmdType, cmdText, cmdParms, true);
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, 2-Dimensional Parameter Array, Clear Paramaeters
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            /// </summary>
            public int ExecuteNonQuery(bool blTransaction, CommandType cmdType, string cmdText, object[,] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    PrepareCommand(blTransaction, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Count of Records Affected
            ///Comments			:	Overloaded function. 
            /// </summary>
            public int ExecuteNonQuery(bool blTransaction, CommandType cmdType, string cmdText, object[,] cmdParms)
            {
                return ExecuteNonQuery(blTransaction, cmdType, cmdText, cmdParms, true);
            }
    
            #endregion
    
            #region STRUCTURE BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, Parameter Structure Array, Clear Parameters
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            /// </summary>
            public int ExecuteNonQuery(CommandType cmdType, string cmdText, Parameters[] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, Parameter Structure Array
            ///OutPut			:	Count of Records Affected
            ///Comments			:	Overloaded method. 
            /// </summary>
            public int ExecuteNonQuery(CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
                return ExecuteNonQuery(cmdType, cmdText, cmdParms, true);
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, Parameter Structure Array, Clear Parameters
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            /// </summary>
            public int ExecuteNonQuery(bool blTransaction, CommandType cmdType, string cmdText, Parameters[] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    PrepareCommand(blTransaction, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteNonQuery();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to Execute the Command
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Transaction, Command Type, Command Text, Parameter Structure Array
            ///OutPut			:	Count of Records Affected
            ///Comments			:	
            /// </summary>
            public int ExecuteNonQuery(bool blTransaction, CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
                return ExecuteNonQuery(blTransaction, cmdType, cmdText, cmdParms, true);
            }
    
            #endregion
    
            #endregion
    
            #region READER METHODS
    
            #region PARAMETERLESS METHODS
    
            /// <summary>
            ///Description	    :	This function is used to fetch data using Data Reader	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Data Reader
            ///Comments			:	
            ///                     Has to be changed/removed if object based array concept is removed.
            /// </summary>
            public SQLiteDataReader ExecuteReader(CommandType cmdType, string cmdText)
            {
    
                // 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
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText);
                    SQLiteDataReader dr = oCommand.ExecuteReader(CommandBehavior.CloseConnection);
                    oCommand.Parameters.Clear();
                    return dr;
    
                }
                catch (Exception ex)
                {
                    CloseFactoryConnection();
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            #endregion
    
            #region OBJECT BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to fetch data using Data Reader	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Data Reader
            ///Comments			:	
            /// </summary>
            public SQLiteDataReader ExecuteReader(CommandType cmdType, string cmdText, object[,] cmdParms)
            {
    
                // 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
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
                    SQLiteDataReader dr = oCommand.ExecuteReader(CommandBehavior.CloseConnection);
                    oCommand.Parameters.Clear();
                    return dr;
    
                }
                catch (Exception ex)
                {
                    CloseFactoryConnection();
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            #endregion
    
            #region STRUCTURE BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to fetch data using Data Reader	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, Parameter AStructure Array
            ///OutPut			:	Data Reader
            ///Comments			:	
            /// </summary>
            public SQLiteDataReader ExecuteReader(CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
    
                // 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
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteReader(CommandBehavior.CloseConnection);
    
                }
                catch (Exception ex)
                {
                    CloseFactoryConnection();
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            #endregion
    
            #endregion
    
            #region ADAPTER METHODS
    
            #region PARAMETERLESS METHODS
    
            /// <summary>
            ///Description	    :	This function is used to fetch data using Data Adapter	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Data Set
            ///Comments			:	
            ///                     Has to be changed/removed if object based array concept is removed.
            /// </summary>
            public DataSet DataAdapter(CommandType cmdType, string cmdText)
            {
    
                // 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
                SQLiteDataAdapter dda = null;
                try
                {
                    EstablishFactoryConnection();
                    dda = new SQLiteDataAdapter();
                    PrepareCommand(false, cmdType, cmdText);
    
                    dda.SelectCommand = oCommand;
                    DataSet ds = new DataSet();
                    dda.Fill(ds);
                    return ds;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
            public DataSet ExecuteDataSet(CommandType cmdType, string cmdText)
            {
                return DataAdapter(cmdType, cmdText);
            }
            #endregion
    
            #region OBJECT BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to fetch data using Data Adapter	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Data Set
            ///Comments			:	
            /// </summary>
            public DataSet DataAdapter(CommandType cmdType, string cmdText, object[,] cmdParms)
            {
    
                // 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
                SQLiteDataAdapter dda = null;
                try
                {
                    EstablishFactoryConnection();
                    dda = new SQLiteDataAdapter();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
    
                    dda.SelectCommand = oCommand;
                    DataSet ds = new DataSet();
                    dda.Fill(ds);
                    return ds;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
            public DataSet ExecuteDataSet(CommandType cmdType, string cmdText, object[,] cmdParms)
            {
                return DataAdapter(cmdType, cmdText, cmdParms);
            }
            #endregion
    
            #region STRUCTURE BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to fetch data using Data Adapter	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Data Set
            ///Comments			:	
            /// </summary>
            public DataSet DataAdapter(CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
    
                // 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
                SQLiteDataAdapter dda = null;
                try
                {
                    EstablishFactoryConnection();
                    dda = new SQLiteDataAdapter();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
    
                    dda.SelectCommand = oCommand;
                    DataSet ds = new DataSet();
                    dda.Fill(ds);
                    return ds;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
            public DataSet ExecuteDataSet(CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
                return DataAdapter(cmdType, cmdText, cmdParms);
            }
            #endregion
    
            #endregion
    
            #region SCALAR METHODS
    
            #region PARAMETERLESS METHODS
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(CommandType cmdType, string cmdText)
            {
                try
                {
                    EstablishFactoryConnection();
    
                    PrepareCommand(false, cmdType, cmdText);
    
                    object val = oCommand.ExecuteScalar();
    
                    return val;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
    
            #endregion
    
            #region OBJECT BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(CommandType cmdType, string cmdText, object[,] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteScalar();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	Overloaded Method. 
            /// </summary>
            public object ExecuteScalar(CommandType cmdType, string cmdText, object[,] cmdParms)
            {
                return ExecuteScalar(cmdType, cmdText, cmdParms, true);
            }
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(bool blTransaction, CommandType cmdType, string cmdText, object[,] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    PrepareCommand(blTransaction, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteScalar();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(bool blTransaction, CommandType cmdType, string cmdText, object[,] cmdParms)
            {
                return ExecuteScalar(blTransaction, cmdType, cmdText, cmdParms, true);
            }
    
            #endregion
    
            #region STRUCTURE BASED PARAMETER ARRAY
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(CommandType cmdType, string cmdText, Parameters[] cmdParms, bool blDisposeCommand)
            {
                try
                {
                    EstablishFactoryConnection();
                    PrepareCommand(false, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteScalar();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                    CloseFactoryConnection();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	Overloaded Method. 
            /// </summary>
            public object ExecuteScalar(CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
                return ExecuteScalar(cmdType, cmdText, cmdParms, true);
            }
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(bool blTransaction, CommandType cmdType, string cmdText, Parameters[] cmdParms, bool blDisposeCommand)
            {
                try
                {
    
                    PrepareCommand(blTransaction, cmdType, cmdText, cmdParms);
                    return oCommand.ExecuteScalar();
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (blDisposeCommand && null != oCommand)
                        oCommand.Dispose();
                }
            }
    
            /// <summary>
            ///Description	    :	This function is used to invoke Execute Scalar Method	
            ///Author			:	AuthorWho
            ///Date				:	2011-11-01
            ///Input			:	Command Type, Command Text, 2-Dimensional Parameter Array
            ///OutPut			:	Object
            ///Comments			:	
            /// </summary>
            public object ExecuteScalar(bool blTransaction, CommandType cmdType, string cmdText, Parameters[] cmdParms)
            {
                return ExecuteScalar(blTransaction, cmdType, cmdText, cmdParms, true);
            }
    
            #endregion
    
            public SQLiteParameter GetParameter(string parameterName)
            {
                return oCommand.Parameters[parameterName];
            }
            #endregion
    
    
            #region edit by lhl 2016-10-17 23:39:59
    
            /// <summary>
            /// 如果数据库不存在,则创建数据库
            /// </summary>
            /// <param name="iName"></param>
            public void CreatDataBase(string iName)
            {
                try
                {
                    string dbName = string.Format("{0}.sqlite", iName);
    
                    //,如果数据库不存在,则创建数据库 MyDatabase
                    if (!File.Exists(dbName)) SQLiteConnection.CreateFile(dbName);
                }
                catch (Exception)
                {
    
                    throw;
                }
            }
    
    
    
            #endregion
    
        }
    
    
        #region STRUCTURES
    
        /// <summary>
        ///Description	    :	This function is used to Execute the Command
        ///Author			:	AuthorWho 
        ///Date				:	2011-11-01
        ///Input			:	
        ///OutPut			:	
        ///Comments			:	
        /// </summary>
        public struct Parameters
        {
            public string ParamName;
            public object ParamValue;
            public DbType ParamDbType;
            public ParameterDirection ParamDirection;
    
            public Parameters(string Name, object Value, ParameterDirection Direction)
            {
                ParamName = Name;
                ParamValue = Value;
                ParamDbType = DbType.Object;
                ParamDirection = Direction;
            }
    
            public Parameters(string Name, object Value)
            {
                ParamName = Name;
                ParamValue = Value;
                ParamDbType = DbType.Object;
                ParamDirection = ParameterDirection.Input;
            }
            public Parameters(string Name, object Value, DbType dbType)
            {
                ParamName = Name;
                ParamValue = Value;
                ParamDbType = dbType;
                ParamDirection = ParameterDirection.Input;
            }
        }
    
        #endregion
        
        #endregion
    }
    

      

  • 相关阅读:
    HDU 1025:Constructing Roads In JGShining's Kingdom(LIS+二分优化)
    HDU 3938:Portal(并查集+离线处理)
    HDU 1811:Rank of Tetris(并查集+拓扑排序)
    HDU 1074:Doing Homework(状压DP)
    HDU 1024:Max Sum Plus Plus(DP)
    最最最亲爱哒
    hlg-1332 买电脑 ---二分
    时间过得很快
    0514
    hlg1551Assemble--暴力求解
  • 原文地址:https://www.cnblogs.com/lhlong/p/13383887.html
Copyright © 2011-2022 走看看