Winforms - заменить ConnectionString во время выполнения

Я хотел бы разрешить своим пользователям переключаться между различными базами данных на странице входа во время выполнения.

В настоящее время у меня есть ConnectionString, хранящийся в моем файле настроек приложения, и все наборы данных относятся к этому параметру.

Я пытался изменить этот параметр во время выполнения, но это кажется невозможным.

Как лучше всего это сделать?


person Nathan Koop    schedule 30.06.2009    source источник


Ответы (3)


Не могли бы вы просто добавить вторую строку подключения в свой файл конфигурации? Какой код доступа к данным у вас установлен?

person Iain Hoult    schedule 30.06.2009
comment
все мои наборы данных имеют свою строку подключения как MyConnectionString (хранится в app.setting) - person Nathan Koop; 30.06.2009
comment
Ваша проблема в том, что все ваши наборы данных индивидуально получают доступ к значению из файла конфигурации? Если это так, то почему бы не создать отдельный фрагмент кода, отвечающий за возврат строки подключения к вашим наборам данных, а затем сделать так, чтобы этот код считывал соответствующую строку подключения. - person Iain Hoult; 30.06.2009

Вы можете заставить код получить строку подключения с диска, вызвав ConfigurationManager.RefreshSection перед получением строки подключения:

ConfigurationManager.RefreshSection("connectionStrings");
string connectionString = ConfigurationManager.ConnectionStrings["someConnection"].ConnectionString;
person Fredrik Mörk    schedule 30.06.2009

Зашифрована ли база данных?

Если это не требует большой конфиденциальности, вы можете сохранить строку подключения для каждого пользователя.

Например:

System.Properties.Default.MyConnectionString = "Blah";
System.Properties.Default.Save();

or

string myConnectionString = System.Properties.Default.MyConnectionString;

РЕДАКТИРОВАТЬ: изначально их можно установить в VS, перейдя в «Проект» -> «Свойства» -> «Настройки» и убедитесь, что вы поместили их в «Пользовательскую» область (область приложения доступна только для чтения во время выполнения, если я не ошибаюсь).

EDIT2: относительно комментария ниже:

SqlConnection myConnection = new SqlConnection();
//Set from a normal String saved in user's settings
myConnection.ConnectionString = System.Properties.Default.MyConnectionString; 
myConnection.Open();
person McAden    schedule 30.06.2009
comment
Строки подключения ограничены областью применения :-( Спасибо, хотя - person Nathan Koop; 30.06.2009
comment
Если я не ошибаюсь, вы можете использовать тип «String». - person McAden; 30.06.2009
comment
connectiostring в properties.default доступен только для чтения, как его можно изменить? - person vaheeds; 30.10.2015