Forum: PC-Programmierung C#: ConnectionString aus app.config auslesen


von Hans (Gast)


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

von Hans (Gast)


Lesenswert?

Kann mir niemand eine Antwort geben?

von Markus V. (Gast)


Lesenswert?


von Hans (Gast)


Lesenswert?

Danke Markus.
Hilft mir leider nicht weiter.

Kann mir niemand sagen wie man den connectionstring aus dem app.config 
auslesen kann?

von kiar (Gast)


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

von Markus V. (valvestino)


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

von Hans (Gast)


Lesenswert?

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.

von Markus V. (valvestino)


Lesenswert?

Hallo Hans,

dann schreibe doch endlich mal, wie sich "es hat nicht funktioniert" 
äussert! Dann kann Dir auch geholfen werden.

Gruß
Markus

von Hans (Gast)


Lesenswert?

Dieser Fehler kommt_

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

von Markus V. (valvestino)


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

von Hans (Gast)


Lesenswert?

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?

von Markus V. (valvestino)


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

von Hans (Gast)


Lesenswert?

Bis jetz zeigt es keine Fehler an, doch wie soll ich die beiden Strings 
herauslesen. Wie kann ich sie in einen String schreiben?

von Markus V. (valvestino)


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

von Hans (Gast)


Lesenswert?

Ich habe es gestestet und gemerkt, dass es nicht den configurationstring 
aus dem app.config ausliest sondern den config von sql.

von Markus V. (valvestino)


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

von Hans (Gast)


Lesenswert?

Habe den Fehler gefunden.

App.config war nicht bei der Ausführung des Programms, sondern in einer 
.dll.

Danke. :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.