Можно ли (и как) добавить ConnectionString в app.config во время выполнения в C #? - PullRequest
5 голосов
/ 02 декабря 2009

У меня есть консольное приложение, которое получает строку подключения в качестве параметра. Я должен был бы установить ConnectionString в app.config с именем 'ConnectionString' и заданным параметром в качестве строки подключения sql.

Спасибо за ответы. С помощью ссылок я попал на это:

var config = ConfigurationManager.OpenExeConfiguration (ConfigurationUserLevel.None); var connectionStringSettings = новые ConnectionStringSettings ("ConnectionString", _arguments ["connectionString"], "System.Data.SqlClient"); config.ConnectionStrings.ConnectionStrings.Add (connectionStringSettings); config.Save (ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection ( "ConnectionStrings");

Ответы [ 2 ]

10 голосов
/ 16 июня 2012

Да, вы можете определенно добавлять / изменять / удалять настройки в app.config во время выполнения. Вот как я обычно это делаю.

using System.Configuration; // don't forget to add the system.configuration dll to your references.

    public static void CreateConnectionString(string datasource, string initialCatalog, string userId, string password)
    {
        try
        {
            //Integrated security will be off if either UserID or Password is supplied
            var integratedSecurity = string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(password);

            //Create the connection string using the connection builder
            var connectionBuilder = new SqlConnectionStringBuilder
            {
                DataSource = datasource,
                InitialCatalog = initialCatalog,
                UserID = userId,
                Password = password,
                IntegratedSecurity = integratedSecurity
            };

            //Open the app.config for modification
            var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            //Retreive connection string setting
            var connectionString = config.ConnectionStrings.ConnectionStrings["ConnectionStringName"];
            if (connectionString == null)
            {
                //Create connection string if it doesn't exist
                config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings
                {
                    Name = ConnectionName,
                    ConnectionString = connectionBuilder.ConnectionString,
                    ProviderName = "System.Data.SqlClient" //Depends on the provider, this is for SQL Server
                });
            }
            else
            {
                //Only modify the connection string if it does exist
                connectionString.ConnectionString = connectionBuilder.ConnectionString;
            }

            //Save changes in the app.config
            config.Save(ConfigurationSaveMode.Modified);
        }
        catch (Exception)
        {
            //TODO: Handle exception
        }
}

Надеюсь, это поможет.

0 голосов
/ 02 декабря 2009

игнорировать этот ответ и увидеть ниже ....

Да - посмотрите на это .

Этот метод, вероятно, то, что вы после

System.Configuration.ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("new name", "new string");
...