www.mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

seit längerem versuche ich den ConnectionString aus dem app.config 
auszulesen. Ich habe es so probiert, doch es funktioniert nicht.
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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir niemand eine Antwort geben?

Autor: Markus V. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Hans,

versuche es mal da:
http://msdn.microsoft.com/de-de/library/system.con...
http://msdn.microsoft.com/de-de/library/system.con...
http://msdn.microsoft.com/de-de/library/system.con...

Ansonsten: etwas mehr Informationen wie "geht nicht" wären mitunter 
hilfreich.

Gruß
Markus

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Markus.
Hilft mir leider nicht weiter.

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

Autor: kiar (Gast)
Datum:

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

sollte klappen,
using System.Configuration
 eingebunden?

raik

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
using System.Configuration

habe ich eingebunden.

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Hans,

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

Gruß
Markus

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieser Fehler kommt_

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei mir läuft folgendes Beispiel:

using System.Configuration;

namespace ConnectionString
{
    class Program
    {
        static void Main(string[] args)
        {
            string conn = ConfigurationManager.ConnectionStrings["conname"].ConnectionString;
        }
    }
}

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

Gruß
Markus

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Markus Volz (valvestino)
Datum:

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

Versuche mal folgenden Code:

using System.Configuration;
using System.Diagnostics;

namespace ConnectionString
{
    class Program
    {
        static void Main(string[] args)
        {
            foreach ( ConnectionStringSettings s in ConfigurationManager.ConnectionStrings )
            {
                Debug.WriteLine( string.Format( "name: {0}, connstr: {1}",s.Name,s.ConnectionString ) );
            }
        }
    }
}
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

Autor: Hans (Gast)
Datum:

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

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

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

Autor: Markus Volz (valvestino)
Datum:

Bewertung
0 lesenswert
nicht 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?
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <connectionStrings>
    <add name="conname" connectionString="Data Source=.." providerName="System.." />
  </connectionStrings>
</configuration>

Markus

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den Fehler gefunden.

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

Danke. :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.