ConnectionString zur Laufzeit setzen
ConnectionStrings werden von Visual Studio automatisch in die Anwendungseinstellungen übernommen und beinhalten bei lokalen Datenbanken (beispielsweise VistaDB) üblicherweise auch den absoluten Pfad. Für Asp.Net bietet sich wohl eine solche Lösung an:
Data Source=|DataDirectory|\MyDatabase.vdb3
Das funktioniert aber nicht bei WinForm-Anwendungen, weil es das DataDirectory dort nicht gibt. In dem Falle kann man den ConnectionString aber für die Entwicklungsumgebung fix setzen und dann einfach zur Laufzeit korrigieren:
string connString = global::MyLib.Properties.Settings.Default.ConnectionStringMyApp; string dbName = "MyDatabase.vdb3"; Int32 startPos = connString.IndexOf("Data Source =\"") + 13; Int32 endPos = connString.IndexOf(dbName + "\"") + dbName.Length; connString = connString.Substring(0, startPos + 1) + "D:\\MyDataDir\\" + dbName + connString.Substring(endPos); global::MyLib.Properties.Settings.Default["ConnectionStringMyApp"] = connString; |
Das funktioniert, wenn man weiß, dass die Properties in den Settings problemlos über Default[] beschrieben werden können.