Hallo zusammen,
ich habe eine Anwendung geschrieben die Daten aus einer Datenbank holt.
Die Verbindungsdaten stehen in der App.config.
Nun hab ich mir gedacht dass ich beim Programmstart den Benutzer die Datenbank per Combobox auswählen lasse (Testsystem, Echtsystem, etc.). Und hier kommt mein Problem: Ich bekomme es einfach nicht hin.
Der Weg den ich zuerst versucht habe war den Connectionstring der aus der App.config zu ändern - was manges Schreibschutz leider nicht gelang.
Wenn mir jemand ne Richtung zeigen könnte wie ich weitermachen kann wär ich sehr dankbar.
Viele Grüße
PS:
Entwicklungsumgsumgebung VS2005Pro
SQL Server 2005
Alla Datasets als Datenquelle mit VS konfiguriert.
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="xxx.Properties.Settings.Testsystem" connectionString="Data Source=xxx;Initial Catalog=Test;Integrated Security=True" />
<add name="xxx.Properties.Settings.Echtsystem" connectionString="Data Source=xxx;Initial Catalog=Prod;Integrated Security=True" />
<add name="xxx.Properties.Settings.Entwicklungssystem" connectionString="Data Source=xxx;Initial Catalog=Entw;Integrated Security=True" />
</connectionStrings>
</configuration>
Die Applicationsettings sind readonly, da lässt sich nix dran rütteln. Usersettings sind bearbeitbar.
Hi,
leider ja. Mein Problem ist das ich nach dem Programmstart eines der drei Connectionstrings auswählen möchte. Dieser gilt dann bis zum Ende des Programms.
Hi,
habe eine Lösung gefunden:
Ich habe in der Settings.cs eine öffentliche Eigenschaft erstellt mit der sich der Connectionstring ändern lässet.
Gruß
Hättest aber auch für jede Connection einen String in die Web.Config schreiben lassen können und dann per Dropdown-Liste die DB-Connection auswählen lassen können, indem Du die verfügbaren Connection-Strings gelistet hättest....
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Hi,
Obwohl meine Lösung funzt - man will ja schließlich nie auslernen 😉 :
Web.config? Ich nutze aber eine Win-Anwendung. Würde es da auch gehen?!?
Gruß
Ups, Sorry ich dachte es wär ne Webseite. Mein Fehler.
Hmm, kannst Dir ja ein Config File basteln und es dann auslesen (muss dann ja nicht Web.Config heissen)
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Das Problem war ja dass die vom VS2005 angelegte Verbindungszeichenfolge in der app.config abgelegt wurde und alle Datasets explizit auf diesen Verbindungsnamen zeigen. Daher musste ich diese Verbindungszeichenfolge umbiegen.
Ich würde es so machen
in der App.Config eine String[] Eigenschaft anlegen, mit allen möglichen Connection Strings
In der User.config (Einstellungen für das lokale Profil) würde ich eine drei Eintragen.
So kann man sich jeder user aussuchen mit welchen Daten er arbeiten möchte.
Es wäre somit auch möglich die Mitarbeiter von 1 Firma, in der in einer Domäne mehrere Filiale sind unterschiedliche Daten zu verfügung zu stellen.
"Das Problem kennen ist wichtiger, als die Lösung zu finden, denn die genaue Darstellung des Problems führt automatisch zur richtigen Lösung." Albert Einstein
Hallo,
muss diesen Thread doch mal wieder aufwärmen...
Ich hatte jetzt quasi genau das gleiche Problem: Wie komm ich gescheit an die Connectionstrings ran? Und zwar möchte ich nicht nur verschiedene Datenbanken anbieten (das wär ja über mehrere ConnectionStrings in der App.Config nicht das Problem, wie geschildert) sondern auch die Serverdaten (wie IP und Port) über ein Optionenmenü einstellbar machen (so dass die DB auch mal umziehen kann, das könnte nämlich bei uns durchaus mal passieren).
Und da stand ich genauso vorm Berg mit dem Schreibschutz, bis ich das über nen ganz billigen Workaround umgangen hab, indem ich die app.config einfach als XMLDocument geladen, verändert und wieder zurückgespeichert hab.
Jetzt stellt sich mir natürlich die Frage nach dem Sinn eines Schreibschutzes für die Configuration-Klassen, wenn das so billig umgangen werden kann...hat man sich da irgendwas bei gedacht?
Gruß Andi