/ / Dynamicznie zmieniaj połączenie z bazą danych SQL Server - c #, sql, sql-server, baza danych, parametry połączenia

Dynamicznie zmieniaj połączenie z bazą danych SQL Server - c #, sql, sql-server, database, connection-string

Mam klasę połączenia, której używam do łączenia się z moją bazą danych, za każdym razem, gdy wykonuję instrukcję select, insert, etc ... Mam ciąg połączenia zakodowany na stałe w klasie.

Problem polega na tym, że jeśli muszę zmienić serwery bazy danych, muszę zmienić ciąg w każdej aplikacji i ponownie opublikować.

Oto mój ciąg połączenia:

var cnnString = string.Format("user id=sa;" +
"password=pw;server=database\instance;" +
"database=dbase; " +
"connection timeout=10");

Myślałem o utworzeniu tabeli i przechowywaniu tam informacji o bazie danych, ale to nie pomaga, jeśli nie można użyć klasy połączenia do wybrania z bazy danych.

Czy można to zrobić dynamicznie?

Odpowiedzi:

2 dla odpowiedzi № 1

Umieść parametry połączenia w pliku .config i użyj klasy ConfigurationManager: https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager%28v=vs.110%29.aspx

Załaduj wszystkie parametry połączenia do tablicy / słownika, a następnie, gdy trzeba utworzyć połączenie, używając odpowiedniego ciągu połączenia.


1 dla odpowiedzi nr 2

Możesz użyć pliku Appconfig

<appSettings>
<add key="dbserver" value="IP_SERVER" />
<add key="dbname" value="DB_NAME" />
<add key="dbuser" value="sa" />
<add key="dbpass" value="PASSWORD" />
</appSettings>

następnie użyj tego, aby utworzyć połączenie łańcuchowe

string strConexion = "Data Source="" + ConfigurationManager.AppSettings["dbserver"] + "";" +
"Initial Catalog="" + ConfigurationManager.AppSettings["dbname"] + "";" +
"User Id="" + ConfigurationManager.AppSettings["dbuser"] + "";" +
"Password="" + ConfigurationManager.AppSettings["dbpass"] + "";";

Za pomocą tego formularza można zmienić wartości konfiguracji

// Otwórz aplikację. Konfiguracja pliku wykonywalnego

    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

config.AppSettings.Settings.Remove("dbserver");
config.AppSettings.Settings.Remove("dbname");
config.AppSettings.Settings.Remove("dbuser");
config.AppSettings.Settings.Remove("dbpass");

// Add an Application Setting.
config.AppSettings.Settings.Add("dbserver", txtDBServer.Text);
config.AppSettings.Settings.Add("dbname", txtDBName.Text);
config.AppSettings.Settings.Add("dbuser", txtDBUser.Text);
config.AppSettings.Settings.Add("dbpass", txtDBPassword.Text);

Zapisz zmiany w pliku App.config.

 config.Save(ConfigurationSaveMode.Modified);

Wymuś przeładowanie zmienionej sekcji.

ConfigurationManager.RefreshSection("appSettings");