Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 09.10.10 09:16 
Guten Morgen zusammen!

Ich möchte den ConnectionString zur Laufzeit ändern, die Doku hat mich zu dem u.A. Code gebracht.

Wenn das Ende der Methode erreicht ist und ich mir die ConnectionStrings von conf anschaue, dann wurde der ConnStr angepasst. Aber irgendwie funktioniert das speichern nicht. Der geänderte Wert wird weder in der app.Config übernommen noch ist er für meine TableAdapter vorhanden(Wenn diese überhaut den ConnString jedes mal neu abgreifen??)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
public void ChangeConnectionString(string connectionStringName, string newConnectionString)
{
    Configuration conf = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    
    conf.ConnectionStrings.ConnectionStrings[connectionStringName].ConnectionString = newConnectionString;
    conf.Save(ConfigurationSaveMode.Modified);
    
    ConfigurationManager.RefreshSection("connectionStrings");
}


Hat jemand eine Idee, was hier schief läuft?

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 09.10.10 09:32 
Die app.config ist schreibgeschützt, dazu sollte es auch ein paar Threads hier im Forum geben. Das musst du entweder in die User-Config auslagern oder im Installer o.Ä. die app.config erstellen lassen.

_________________
>λ=
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 09.10.10 10:14 
Hm,

also das mit dem Setup möchte ich nicht.Einen ConnString kann man aber nur unter Application anlegen, nicht unter User. Mir würde es schon reichen, wenn die Änderung nur für die aktuelle Sitzung übernommen wird. Ich würde dann immer bei Prog. start den String ändern...

_________________
Gruß
Christoph
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 09.10.10 11:00 
Generell kann man natürlich einen beliebigen Connection-String zum Aufbau einer DB-Verbindung angeben :) . Ich weiß ja nicht, worüber du bisher die Verbindung herstellst (dieses "DataSet-auf-Form-klatschen"?), aber es ist für deine Zwecke anscheinend zu statisch. Bei O/RMs ist es beispielsweise Gang und Gebe, den String der Session als Konstruktor-Parameter zu übergeben.

_________________
>λ=
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Sa 09.10.10 13:28 
Hi,

der ConnString wurde mittels KonfigAssi des DataSets erstellt, das ist zur entwicklung auch praktisch. Bisher habe ich immer den String bei der Verwendung des TableAdapters verändert, ich würde das aber gerne zentral erledigen, da es mir zu umständlich ist überall den String zu ändern.

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 10.10.10 10:41 
Also, irgendwie ist das mit dem ConnectionString mangelhaft, die haben bei MS wohl nur auf Entwicklungs Maschienen gearbeitet und nie auf ein Produktives-System umgestellt.

Ich habe drei TableAdapter, bei diesen möchte ich den ConnStr mittels:

TableAdapter.Connection.ConnectionString = "newConnStr"

ändern.

Kann mir mal jemand verraten warum das bei einem Adapter funktioniert und bei den anderen nicht? (sorry ich befürchte das ich mich verrant habe :oops:)

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: So 10.10.10 20:32 
So, irgendwie spinnt mein Konfigurationsassistent. Ich habe mal ein neues Projekt erstellt und dann werde ich gefragt, ob der ConnectionString in den AppSettings gespeichert werden soll. (Wenn ich hier nein angebe, kann ich auch den ConnString ändern) Wenn ich nun in meinem aktuellen Projekt den Assi zur Hilfe nehme, wird dieser Punkt übergangen. Das würde ich gerne ändern! Hat jemand eine Idee, wie ich die Verbindungszeichenfolge aus den Settings nachträglich ausschließen kann?

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mo 11.10.10 17:03 
So, Problem erkann - Problem gebannt! :dance:

Der Designer-Code war nicht in Ordnung. Als ich mir diesen angesehen habe, wurde ich mit „maximale Anzahl an Warnungen erreicht“ von der Fehlerliste begrüßt. Bei einigen TableAdapter-Abfrage-Methoden war es so, da auf „Properties.SettingsConnStr1“ verwiesen wurde, diesen gibt/gabe es meines Wissens nach nie, oder wurde versehentlich erstellt und nicht ordnungsgemäß entfernt. Mit etwas fummelei am Designer-Code konnte ich das beheben.
Nun kann ich den ConnectionString vom TableAdaper wieder problemlos verändern. Und zu meiner Freude funktioniert nun auch der oben aufgeführte Code. Jetzt kann ich die Verbindungszeichenfolge temporär zur Laufzeit verändern. Das ist praktisch, da der Entwicklungs-ConnString für den Designer erhalten bleibt. Für eine Produktivversion müssen dann nur kurz die Zugangsdaten eingepflegt werden, sehr schön, so hatte ich mir das vorgestellt!

Man oh man, was für ein Aufriss. Ich wollte eigentlich nur kurz, bei einer Tasse Kaffee, einen variablen ConnectionString für mein Projekt ermöglichen. Wenn man Programme schreiben möchte braucht man schon etwas geduld :nut:

_________________
Gruß
Christoph
Christoph1972 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Mi 13.10.10 15:57 
Schade, zu früh gefreut. Es dauert immer x Minuten dann ist der ConnectionString in der gesamten Application null. Wie kann das sein, was mag da passieren??

_________________
Gruß
Christoph