Laden...

Datenbankauswahl beim Programmstart

Erstellt von eichbaum vor 17 Jahren Letzter Beitrag vor 16 Jahren 3.034 Views
E
eichbaum Themenstarter:in
17 Beiträge seit 2006
vor 17 Jahren
Datenbankauswahl beim Programmstart

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>
563 Beiträge seit 2004
vor 17 Jahren

Die Applicationsettings sind readonly, da lässt sich nix dran rütteln. Usersettings sind bearbeitbar.

E
eichbaum Themenstarter:in
17 Beiträge seit 2006
vor 17 Jahren

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.

E
eichbaum Themenstarter:in
17 Beiträge seit 2006
vor 17 Jahren

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ß

1.433 Beiträge seit 2006
vor 17 Jahren

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

E
eichbaum Themenstarter:in
17 Beiträge seit 2006
vor 17 Jahren

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ß

1.433 Beiträge seit 2006
vor 17 Jahren

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

E
eichbaum Themenstarter:in
17 Beiträge seit 2006
vor 17 Jahren

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.

1.274 Beiträge seit 2005
vor 17 Jahren

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

A
65 Beiträge seit 2007
vor 16 Jahren
Sinn und Unsinn des Schreibschutzes

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