예제 #1
0
        public ErrorTypes AddRandomKey(string sKey, TaskResultData oTastToAdd, out TaskResultData oTastAdded)
        {
            ErrorTypes eError = ErrorTypes.TaskResult;

            oTastAdded = oTastToAdd.Clone();
            try
            {
                using (IDbConnection sqlCon = GetDbConnection())
                {
                    sqlCon.Open();
                    while (true)
                    {
                        string sNewKey = sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
                        oTastAdded.sKey = sNewKey;
                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetINSERTString(oTastAdded);
                            bool bExist = false;
                            try
                            {
                                oAddCommand.ExecuteNonQuery();
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (false == bExist)
                            {
                                eError = ErrorTypes.NoError;
                                break;
                            }
                        }
                    }
                }
            }
            catch
            {
                eError = ErrorTypes.TaskResult;
            }
            if (ErrorTypes.NoError != eError)
            {
                oTastAdded = null;
            }
            return(eError);
        }
예제 #2
0
 public void AddRandomKeyBegin(string sKey, TaskResultData oTastToAdd, AsyncCallback fCallback, object oParam)
 {
     m_oAddRandomKey         = new TransportClass(fCallback, oParam);
     m_oAddRandomKey.m_oTast = oTastToAdd.Clone();
     try
     {
         m_oAddRandomKey.m_oSqlCon = GetDbConnection();
         m_oAddRandomKey.m_oSqlCon.Open();
         string sNewKey = sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
         m_oAddRandomKey.m_oTast.sKey = sNewKey;
         IDbCommand oSelCommand = m_oAddRandomKey.m_oSqlCon.CreateCommand();
         m_oAddRandomKey.m_oCommand         = oSelCommand;
         oSelCommand.CommandText            = GetINSERTString(m_oAddRandomKey.m_oTast);
         m_oAddRandomKey.m_delegateNonQuery = new ExecuteNonQuery(oSelCommand.ExecuteNonQuery);
         m_oAddRandomKey.m_delegateNonQuery.BeginInvoke(AddRandomKeyCallback, null);
     }
     catch
     {
         m_oAddRandomKey.DisposeAndCallback();
     }
 }
        public ErrorTypes GetOrCreate(string sKey, TaskResultData oDefaultTast, out TaskResultData oTaskResultData, out bool bCreate)
        {
            ErrorTypes eErrorTypes = ErrorTypes.TaskResult;
            oTaskResultData = null;
            bCreate = false;
            try
            {
                using (IDbConnection sqlCon = GetDbConnection())
                {
                    sqlCon.Open();
                    bool bEmptyRead = true;
                    using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                    {
                        oSelCommand.CommandText = GetSELECTString(sKey);
                        using (IDataReader oReader = oSelCommand.ExecuteReader())
                        {
                            if (true == oReader.Read())
                            {
                                oTaskResultData = new TaskResultData();
                                TaskResultFromReader(oTaskResultData, oReader);

                                bEmptyRead = false;
                                bCreate = false;
                                eErrorTypes = ErrorTypes.NoError;
                            }
                        }
                    }
                    if (bEmptyRead)
                    {
                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetINSERTString(oDefaultTast);
                            bool bExist = false;
                            try
                            {
                                oAddCommand.ExecuteNonQuery();
                                oTaskResultData = oDefaultTast.Clone();
                                eErrorTypes = ErrorTypes.NoError;
                                bCreate = true;
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (bExist)
                            {
                                using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                                {
                                    oSelCommand.CommandText = GetSELECTString(sKey);
                                    using (IDataReader oReader = oSelCommand.ExecuteReader())
                                    {
                                        if (true == oReader.Read())
                                        {
                                            oTaskResultData = new TaskResultData();
                                            TaskResultFromReader(oTaskResultData, oReader);

                                            bCreate = false;
                                            eErrorTypes = ErrorTypes.NoError;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            return eErrorTypes;
        }
 public void AddRandomKeyBegin(string sKey, TaskResultData oTastToAdd, AsyncCallback fCallback, object oParam)
 {
     m_oAddRandomKey = new TransportClass(fCallback, oParam);
     m_oAddRandomKey.m_oTast = oTastToAdd.Clone();
     try
     {
         m_oAddRandomKey.m_oSqlCon = GetDbConnection();
         m_oAddRandomKey.m_oSqlCon.Open();
         string sNewKey = sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
         m_oAddRandomKey.m_oTast.sKey = sNewKey;
         IDbCommand oSelCommand = m_oAddRandomKey.m_oSqlCon.CreateCommand();
         m_oAddRandomKey.m_oCommand = oSelCommand;
         oSelCommand.CommandText = GetINSERTString(m_oAddRandomKey.m_oTast);
         m_oAddRandomKey.m_delegateNonQuery = new ExecuteNonQuery(oSelCommand.ExecuteNonQuery);
         m_oAddRandomKey.m_delegateNonQuery.BeginInvoke(AddRandomKeyCallback, null);
     }
     catch
     {
         m_oAddRandomKey.DisposeAndCallback();
     }
 }
 public ErrorTypes AddRandomKey(string sKey, TaskResultData oTastToAdd, out TaskResultData oTastAdded)
 {
     ErrorTypes eError = ErrorTypes.TaskResult;
     oTastAdded = oTastToAdd.Clone();
     try
     {
         using (IDbConnection sqlCon = GetDbConnection())
         {
             sqlCon.Open();
             while (true)
             {
                 string sNewKey = sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
                 oTastAdded.sKey = sNewKey;
                 using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                 {
                     oAddCommand.CommandText = GetINSERTString(oTastAdded);
                     bool bExist = false;
                     try
                     {
                         oAddCommand.ExecuteNonQuery();
                     }
                     catch
                     {
                         bExist = true;
                     }
                     if (false == bExist)
                     {
                         eError = ErrorTypes.NoError;
                         break;
                     }
                 }
             }
         }
     }
     catch
     {
         eError = ErrorTypes.TaskResult;
     }
     if (ErrorTypes.NoError != eError)
     {
         oTastAdded = null;
     }
     return eError;
 }
예제 #6
0
        public ErrorTypes GetOrCreate(string sKey, TaskResultData oDefaultTast, out TaskResultData oTaskResultData, out bool bCreate)
        {
            ErrorTypes eErrorTypes = ErrorTypes.TaskResult;

            oTaskResultData = null;
            bCreate         = false;
            try
            {
                using (IDbConnection sqlCon = GetDbConnection())
                {
                    sqlCon.Open();
                    if (Constants.mc_sPostgreProvider == Utils.GetDbConnectionProviderName(m_sConnectionString))
                    {
                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetINSERTString(oDefaultTast);
                            bool bExist = false;
                            try
                            {
                                oAddCommand.ExecuteNonQuery();
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (bExist)
                            {
                                using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                                {
                                    TaskResultDataToUpdate oToUpdate = new TaskResultDataToUpdate();
                                    oToUpdate.oLastOpenDate = DateTime.UtcNow;
                                    oSelCommand.CommandText = GetUPDATEString(sKey, oToUpdate) + GetSELECTString(sKey);
                                    using (IDataReader oReader = oSelCommand.ExecuteReader())
                                    {
                                        if (true == oReader.Read())
                                        {
                                            oTaskResultData = new TaskResultData();
                                            TaskResultFromReader(oTaskResultData, oReader);

                                            bCreate     = false;
                                            eErrorTypes = ErrorTypes.NoError;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                oTaskResultData = oDefaultTast.Clone();
                                bCreate         = true;
                                eErrorTypes     = ErrorTypes.NoError;
                            }
                        }
                    }
                    else
                    {
                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetUPSERTString(oDefaultTast);
                            bool bExist = false;
                            try
                            {
                                int nNumRowsAffected = oAddCommand.ExecuteNonQuery();

                                oTaskResultData = oDefaultTast.Clone();
                                eErrorTypes     = ErrorTypes.NoError;

                                bCreate = (nNumRowsAffected == 1);
                                bExist  = (nNumRowsAffected > 1);
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (bExist)
                            {
                                using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                                {
                                    oSelCommand.CommandText = GetSELECTString(sKey);
                                    using (IDataReader oReader = oSelCommand.ExecuteReader())
                                    {
                                        if (true == oReader.Read())
                                        {
                                            oTaskResultData = new TaskResultData();
                                            TaskResultFromReader(oTaskResultData, oReader);

                                            bCreate     = false;
                                            eErrorTypes = ErrorTypes.NoError;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            return(eErrorTypes);
        }
예제 #7
0
        public ErrorTypes GetOrCreate(string sKey, TaskResultData oDefaultTast, out TaskResultData oTaskResultData, out bool bCreate)
        {
            ErrorTypes eErrorTypes = ErrorTypes.TaskResult;
            oTaskResultData = null;
            bCreate = false;
            try
            {
                using (IDbConnection sqlCon = GetDbConnection())
                {
                    sqlCon.Open();
                    if (Constants.mc_sPostgreProvider == Utils.GetDbConnectionProviderName(m_sConnectionString))
                    {
                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetINSERTString(oDefaultTast);
                            bool bExist = false;
                            try
                            {
                                oAddCommand.ExecuteNonQuery();
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (bExist)
                            {
                                using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                                {
                                    TaskResultDataToUpdate oToUpdate = new TaskResultDataToUpdate();
                                    oToUpdate.oLastOpenDate = DateTime.UtcNow;
                                    oSelCommand.CommandText = GetUPDATEString(sKey, oToUpdate) + GetSELECTString(sKey);
                                    using (IDataReader oReader = oSelCommand.ExecuteReader())
                                    {
                                        if (true == oReader.Read())
                                        {
                                            oTaskResultData = new TaskResultData();
                                            TaskResultFromReader(oTaskResultData, oReader);

                                            bCreate = false;
                                            eErrorTypes = ErrorTypes.NoError;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                oTaskResultData = oDefaultTast.Clone();
                                bCreate = true;
                                eErrorTypes = ErrorTypes.NoError;
                            }
                        }
                    }
                    else
                    {

                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetUPSERTString(oDefaultTast);
                            bool bExist = false;
                            try
                            {
                                int nNumRowsAffected = oAddCommand.ExecuteNonQuery();

                                oTaskResultData = oDefaultTast.Clone();
                                eErrorTypes = ErrorTypes.NoError;

                                bCreate = (nNumRowsAffected == 1);
                                bExist = (nNumRowsAffected > 1);
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (bExist)
                            {
                                using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                                {
                                    oSelCommand.CommandText = GetSELECTString(sKey);
                                    using (IDataReader oReader = oSelCommand.ExecuteReader())
                                    {
                                        if (true == oReader.Read())
                                        {
                                            oTaskResultData = new TaskResultData();
                                            TaskResultFromReader(oTaskResultData, oReader);

                                            bCreate = false;
                                            eErrorTypes = ErrorTypes.NoError;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            return eErrorTypes;
        }
예제 #8
0
        public ErrorTypes GetOrCreate(string sKey, TaskResultData oDefaultTast, out TaskResultData oTaskResultData, out bool bCreate)
        {
            ErrorTypes eErrorTypes = ErrorTypes.TaskResult;

            oTaskResultData = null;
            bCreate         = false;
            try
            {
                using (IDbConnection sqlCon = GetDbConnection())
                {
                    sqlCon.Open();
                    bool bEmptyRead = true;
                    using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                    {
                        oSelCommand.CommandText = GetSELECTString(sKey);
                        using (IDataReader oReader = oSelCommand.ExecuteReader())
                        {
                            if (true == oReader.Read())
                            {
                                oTaskResultData = new TaskResultData();
                                TaskResultFromReader(oTaskResultData, oReader);

                                bEmptyRead  = false;
                                bCreate     = false;
                                eErrorTypes = ErrorTypes.NoError;
                            }
                        }
                    }
                    if (bEmptyRead)
                    {
                        using (IDbCommand oAddCommand = sqlCon.CreateCommand())
                        {
                            oAddCommand.CommandText = GetINSERTString(oDefaultTast);
                            bool bExist = false;
                            try
                            {
                                oAddCommand.ExecuteNonQuery();
                                oTaskResultData = oDefaultTast.Clone();
                                eErrorTypes     = ErrorTypes.NoError;
                                bCreate         = true;
                            }
                            catch
                            {
                                bExist = true;
                            }
                            if (bExist)
                            {
                                using (IDbCommand oSelCommand = sqlCon.CreateCommand())
                                {
                                    oSelCommand.CommandText = GetSELECTString(sKey);
                                    using (IDataReader oReader = oSelCommand.ExecuteReader())
                                    {
                                        if (true == oReader.Read())
                                        {
                                            oTaskResultData = new TaskResultData();
                                            TaskResultFromReader(oTaskResultData, oReader);

                                            bCreate     = false;
                                            eErrorTypes = ErrorTypes.NoError;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
            }
            return(eErrorTypes);
        }