VS2005 C # Программно изменить строку подключения, содержащуюся в app.config - PullRequest
9 голосов
/ 15 сентября 2008

Хотел бы программно изменить строку подключения для базы данных, которая использует поставщика членства asp.net в приложении Windows. Пространство имен system.configuration позволяет изменять пользовательские настройки, однако нам бы хотелось изменить настройки приложения? Нужно ли писать класс с использованием XML для изменения класса? Нужно ли удалять текущие соединения (можно ли выбрать соединение для очистки) и добавлять новое? Можно ли настроить существующую строку подключения?

Ответы [ 4 ]

9 голосов
/ 10 января 2012

Пришлось сделать именно эту вещь. Вот код, который работал для меня:

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
connectionStringsSection.ConnectionStrings["Blah"].ConnectionString = "Data Source=blah;Initial Catalog=blah;UID=blah;password=blah";
config.Save();
ConfigurationManager.RefreshSection("connectionStrings");
8 голосов
/ 15 сентября 2008
// Get the application configuration file.
System.Configuration.Configuration config =
        ConfigurationManager.OpenExeConfiguration(
        ConfigurationUserLevel.None);

// Create a connection string element and
// save it to the configuration file.

// Create a connection string element.
ConnectionStringSettings csSettings =
        new ConnectionStringSettings("My Connection",
        "LocalSqlServer: data source=127.0.0.1;Integrated Security=SSPI;" +
        "Initial Catalog=aspnetdb", "System.Data.SqlClient");

// Get the connection strings section.
ConnectionStringsSection csSection =
    config.ConnectionStrings;

// Add the new element.
csSection.ConnectionStrings.Add(csSettings);

// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified);
6 голосов
/ 15 сентября 2008

Вы можете программно открыть конфигурацию, используя пространство имен System.configuration:

Configuration myConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

Затем вы можете получить доступ к коллекции строк подключения по адресу:

myConfig.ConnectionStrings.ConnectionStrings

Вы можете изменить коллекцию по своему усмотрению, и когда закончите, вызовите .Save() для объекта конфигурации.

0 голосов
/ 15 сентября 2008

Используйте класс ConnectionStringsSection. В документации даже приведен пример того, как создать новую ConnectionString и сделать так, чтобы инфраструктура сохранила ее в конфигурационном файле, не прибегая к реализации всего XML-заголовка.

См. здесь и найдите пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...