예제 #1
0
        internal static T GetSettingValue <T>(string settingName, SettingsTable settingTableName = SettingsTable.Settings)
        {
            if (settingTableName == SettingsTable.MigrationTableSettings)
            {
                return(GetMappingSettingValue <T>(settingName));
            }

            using (var cInstance = new OleDbConnectionInstance(ConnectionString))
            {
                var command = new OleDbCommand($"SELECT `{settingName}` FROM `{GetTableName(settingTableName)}` WHERE `Id` = 1", cInstance.GetConnection());
                command.Connection.Open();
                try
                {
                    var key = command.ExecuteScalar();
                    if (key == null || key == DBNull.Value)
                    {
                        return(default(T));
                    }
                    var conv = TypeDescriptor.GetConverter(typeof(T));
                    return((T)conv.ConvertFrom(key));
                }
                catch (Exception e)
                {
                    Logger.Instance.Error($"An error occurred while retrieving the {settingName}: {e.Message}");
                }
                finally
                {
                    command.Connection.Close();
                    cInstance.CloseConnection();
                }
            }

            return(default(T));
        }
예제 #2
0
        private static void SaveSettingValue(string dbSettingName, string appSettingName, object value, SettingsTable settingsTable = SettingsTable.Settings)
        {
            if (string.IsNullOrEmpty(appSettingName))
            {
                appSettingName = dbSettingName;
            }

            if (settingsTable == SettingsTable.MigrationTableSettings)
            {
                SaveMappingSettingValue(dbSettingName, value);
                return;
            }

            using (var cInstance = new OleDbConnectionInstance(ConnectionString))
            {
                var command = new OleDbCommand($"UPDATE `{GetTableName(settingsTable)}` SET `{dbSettingName}` = @value WHERE `ID` = 1",
                                               cInstance.GetConnection());
                command.Parameters.AddWithValue("@value", value);

                command.Connection.Open();
                try
                {
                    command.ExecuteNonQuery();

                    var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                    config.AppSettings.Settings[appSettingName].Value = value.ToString();
                    config.Save(ConfigurationSaveMode.Modified);

                    Logger.Instance.Debug($"{dbSettingName} saved: '{value}'");
                }
                catch (Exception e)
                {
                    Logger.Instance.Error($"An error occured while updating {dbSettingName}. {e.Message}");
                }
                finally
                {
                    command.Connection.Close();
                    cInstance.CloseConnection();
                }
            }
        }
예제 #3
0
        public static bool TryConnect()
        {
            System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);
            //var _connection = ConnectionInstance.Instance.GetConnection($"DSN={DsnName}");
            using (var cInstance = new OleDbConnectionInstance(ConnectionString))
            {
                var connection = cInstance.GetConnection();
                try
                {
                    connection.Open();
                }
                catch (OleDbException e)
                {
                    Logger.Instance.Error($"Could not connect to the DSN {ConnectionString}: {e.Message}");
                    return(false);
                }
                finally
                {
                    cInstance.CloseConnection();
                }
            }

            return(true);
        }