C#: ConnectionString aus app.config auslesen

Gast #1637318
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
Gast
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
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
Gast
Habe Visual Studio 2005. Schaue mir die Dokumente nochmals an. Doch ich 
habe es schon ein paar mal probiert und es hat nicht funktioniert.

und
1
using System.Configuration

habe ich eingebunden.
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
Gast
Ich habe VisualStudio 2005. Kann es sein dases im 2005 anderst war, als 
im 2007?

Oder kann es auch sein dases nur in der Consolenanwendung funktioniert?
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.