C#: ConnectionString aus app.config auslesen

Gast #1637318
Lesenswert?

Hallo zusammen,

seit längerem versuche ich den ConnectionString aus dem app.config 
auszulesen. Ich habe es so probiert, doch es funktioniert nicht.
1
string conn = ConfigurationManager.ConnectionStrings["conname"].ConnectionString;

app.config:

<connectionStrings>
  <add name="conname"
            connectionString="Data Source=.."
            providerName="System.." />
</connectionStrings>

Kann mir jemand sagen wo der Fehler liegt oder wo ich es nachschauen 
kann?

Gruss Hans
Gast #1637948
Lesenswert?

Gast #1638822
Lesenswert?

du jammerst hier rum, gibt's aber weder deine .net Version an, noch 
zeigst du code wie du darauf zugreifst.
1
string conn = ConfigurationManager.ConnectionStrings["conname"].ConnectionString;

sollte klappen,
1
using System.Configuration
 eingebunden?

raik
#1639216
Lesenswert?

Hans schrieb:
> Ich habe es so probiert, doch es funktioniert nicht.

Wie ich (Markus V.) weiter oben bereits geschrieben habe: "es 
funktioniert nicht" ist reichlich dünn. Welches visual Studio (oder ganz 
was anderes). Welche .NET-Version? Welch Fehlermeldung(en)?

> Kann mir jemand sagen wo der Fehler liegt oder wo ich es nachschauen
> kann?

Das habe ich bereits oben mit den drei MSDN-Links getan. Wenn Du dir die 
Mühe machen würdest, die MSDN-Doku mal genauer zu LESEN, da sind 
Code-Beispiele, Beispiele für den Aufbau der Config-Datei uvm. 
enthalten. Man müßte sich allerdings auch die Mühe machen, weitere Links 
in den Dokumenten zu verfolgen, vielleicht mal die Class-Members 
ansehen, die Beispiele studieren,...

Ich habe mich gestern Abend hingesetzt, habe mir die Doku angeschaut und 
innerhalb 10 Minuten ein laufendes Code-Stück gehabt.

Ach ja, der dritte Link ist zugegebenermaßen überflüssig.

Und wie bereits erwähnt: Wenn Du möchtest, dass Dir geholfen wird, gib 
mal ein paar mehr Infos zu Deinem Problem.

Gruß
Markus
#1644603
Lesenswert?

Bei mir läuft folgendes Beispiel:
1
using System.Configuration;
2

3
namespace ConnectionString
4
{
5
    class Program
6
    {
7
        static void Main(string[] args)
8
        {
9
            string conn = ConfigurationManager.ConnectionStrings["conname"].ConnectionString;
10
        }
11
    }
12
}

Mit folgender App.config
1
<?xml version="1.0" encoding="utf-8" ?>
2
<configuration>
3
  <connectionStrings>
4
    <add name="conname" connectionString="Data Source=.." providerName="System.." />
5
  </connectionStrings>
6
</configuration>

Gruß
Markus
#1644732
Lesenswert?

Ich verwende auch VS2005. Der Code sollte sowohl in einer 
Consolenanwendung als auch in einem WinForms Programm funktionieren.

Versuche mal folgenden Code:
1
using System.Configuration;
2
using System.Diagnostics;
3

4
namespace ConnectionString
5
{
6
    class Program
7
    {
8
        static void Main(string[] args)
9
        {
10
            foreach ( ConnectionStringSettings s in ConfigurationManager.ConnectionStrings )
11
            {
12
                Debug.WriteLine( string.Format( "name: {0}, connstr: {1}",s.Name,s.ConnectionString ) );
13
            }
14
        }
15
    }
16
}
Die Exception "Objektverweis wurde nicht auf eine Objektinstanz 
festgelegt." kommt dann, wenn der ConfigurationManager unter dem 
angegebenen Namen (oder Index!) keine ConnectionStringSettings ermitteln 
kann.

Gruß
Markus
#1644831
Lesenswert?

Das Codebeispiel war dazu gedacht, zu testen, ob der Zugriff auf die 
App.config prinzipiell funktioniert und ob Du den Namen des gewünschten 
ConnectionStringSettings-Objekts richtig in Deinem Code angegeben hast 
(vergleiche Namen im Ausgabe-Fenster von VS mit Deinem nicht arbeitenden 
Code).

Wie bereits geschrieben ist der Fehler, den Du erhältst, eine Folge 
davon, dass der ConfigurationManager keine ConnectionStringSettings zu 
Deinem Namen findet, dass Du also wahrscheinlich den falschen Namen 
übergibst. Du kannst übrigens auch (testhalber!) versuchen, mit 
ConfigurationManager.ConnectionStrings[int index] auf die 
ConnectionStringSettings zugreifen...

Gruß
Markus
#1644904
Lesenswert?

Ich habe es in der Doku noch nicht nachgelesen, aber in meiner 
Installation ist ConfigurationManager.ConnectionStrings[0] auch der 
ConnectionString von LocalSqlServer (SQLEXPRESS). Unter 
ConfigurationManager.ConnectionStrings[1] habe ich dann die Daten von 
"conname".

Ich habe den Verdacht, dass mit Deiner App.config was nicht stimmt. Hast 
Du diese mit ins Projekt aufgenomnmen? Liegt sie bei der Ausführung des 
Programms im selben Ordner? Entspricht sie vom Aufbau her dem folgenden 
App.config-Auszug?
1
<?xml version="1.0" encoding="utf-8" ?>
2
<configuration>
3
  <connectionStrings>
4
    <add name="conname" connectionString="Data Source=.." providerName="System.." />
5
  </connectionStrings>
6
</configuration>

Markus

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren