Verbindungszeichenfolge aus App.config abrufen

380
var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

Und das ist meine App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Aber wenn mein Projekt läuft, ist dies mein Fehler:

Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt.

Moham ad Jafari
quelle
5
Wo haben Sie diese App.config abgelegt? Projekt der Anwendung, die Sie ausführen, oder vielleicht eine DLL? Sie brauchen zuerst
abatishchev
3
Fügen Sie einen Verweis auf System.Configuration.dll hinzu, und Sie sollten in der Lage sein, den System.Configuration.ConfigurationManager zu verwenden.
Daszarrin
Ihre Verbindungszeichenfolge hat einen Tippfehler. Sie benötigen ein Leerzeichen zwischen "Integriert" und "Sicherheit"
Onur Omer
@OnurOmer - Frage wurde aktualisiert, um den Raum einzuschließen ("Integrierte Sicherheit" anstelle von "Integrierte Sicherheit")
SlimsGhost

Antworten:

484

Können Sie nicht einfach Folgendes tun:

var connection = 
    System.Configuration.ConfigurationManager.
    ConnectionStrings["Test"].ConnectionString;

Ihre Baugruppe benötigt auch einen Verweis auf System.Configuration.dll

Duffp
quelle
14
Ich weiß, dass dies eine C # -Frage ist, aber da dies die Spitze der Google-Suchergebnisse ist, ist dies System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringfür diejenigen von uns, die VB-Code pflegen müssen
JFA
296

Da dies eine sehr häufige Frage ist, habe ich einige Screenshots von Visual Studio vorbereitet, um das Befolgen in 4 einfachen Schritten zu vereinfachen.

Verbindungszeichenfolge aus app.config abrufen

Fredrick Gauss
quelle
22
Ich liebe diese Antwort. Standardmäßig ist diese Bibliothek in meiner Version von VS (VS2012 Ultimate) nicht enthalten, using System.Configurationfunktioniert aber immer noch
David Colwell
3
Ich musste wirklich die Referenz hinzufügen oder die Verwendung war nicht unterstrichen, aber ConfigurationManager noch unbekannt. Vielen Dank!
CodingYourLife
33
string str = Properties.Settings.Default.myConnectionString; 
gjijo
quelle
1
Was ist, wenn app.config als Link zu einem Projekt hinzugefügt wird?
FrenkyB
2
Dies funktioniert nur, wenn Ihre Verbindungszeichenfolge eine App-Einstellung ist. Es funktioniert nicht, wenn <connectionStrings>Elemente aus app.config abgerufen werden (was das OP verlangt!).
BrainSlugs83
31

Überprüfen Sie auch, ob Sie die System.ConfigurationDLL in Ihre Referenzen aufgenommen haben. Ohne diese Funktion haben Sie keinen Zugriff auf die ConfigurationManagerKlasse im System.Configuration-Namespace.

Carl Heinrich Hancke
quelle
22

Fügen Sie zunächst einen Verweis System.Configurationauf Ihre Seite hinzu.

using System.Configuration;

Dann erhalten Sie laut Ihrer app.config die Verbindungszeichenfolge wie folgt.

string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();

Jetzt haben Sie Ihre Verbindungszeichenfolge in der Hand und können sie verwenden.

Tapan Kumar
quelle
16
//Get Connection from web.config file
public static OdbcConnection getConnection()
{
    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    return con;     
}
Gobind Mandal
quelle
6

Probieren Sie es aus

string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;
vishu9219
quelle
3

1) Erstellen Sie ein neues Formular und fügen Sie dieses hinzu:

Imports System.Configuration
Imports Operaciones.My.MySettings

Public NotInheritable Class frmconexion

    Private Shared _cnx As String
    Public Shared Property ConexionMySQL() As String
        Get
            Return My.MySettings.Default.conexionbd
        End Get
        Private Set(ByVal value As String)
            _cnx = value
        End Set
    End Property

End Class

Wenn Sie dann die Verbindung verwenden möchten, gehen Sie wie folgt vor:

 Private Sub frmInsert_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)
cn.open()

und das ist es. Sie werden mit der DB verbunden und können Dinge tun.

Dies ist für vb.net, aber die Logik ist dieselbe.

OREO
quelle
3

Hast du es versucht:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);
Vlad Bezden
quelle
3

Ich hatte das gleiche Problem. Meine Lösung wurde aus zwei Projekten aufgebaut. A Class libraryund eine Website, die auf das Klassenbibliotheksprojekt verweist. Das Problem war, dass ich versuchte, auf das App.configin meinem Class libraryProjekt zuzugreifen, aber das System suchte auf Web.configder Website. Ich habe die Verbindungszeichenfolge eingefügtWeb.config und ... Problem gelöst!

Der Hauptgrund war, dass trotz ConfigurationManagerder Verwendung in einer anderen Baugruppe innerhalb des laufenden Projekts gesucht wurde.

AmiNadimi
quelle
3

Mit dieser Methode können Sie die Verbindungszeichenfolge abrufen

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}
Hidayet R. Colkusu
quelle
2
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
Khatami
quelle
2

Zuerst müssen Sie einen System.ConfigurationVerweis auf Ihr Projekt hinzufügen und dann den folgenden Code verwenden, um die Verbindungszeichenfolge abzurufen.

_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();
Sagar Jaybhay
quelle
2

Das hat bei mir funktioniert:

string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;

Ausgänge:

Datenquelle =.; Erstkatalog = OmidPayamak; IntegratedSecurity = True "

Talha Imam
quelle
1

Sie können die Verbindungszeichenfolge mithilfe der folgenden Codezeile abrufen -

using System; using System.Configuration;

var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

Hier ist eine Referenz: Verbindungszeichenfolge aus App.config

etwas
quelle
2
Ich habe das Gleiche getan, wie du gesagt hast, aber den gleichen Null-Referenzfehler, den ich bekomme.
Enigmatic Mind
1

Es scheint, dass das Problem nicht mit der Referenz zusammenhängt. Sie erhalten den Verbindungsstring als null. Stellen Sie daher sicher, dass Sie der Konfigurationsdatei Ihres laufenden Projekts den Wert hinzugefügt haben, dh das Hauptprogramm / die Hauptbibliothek, die zuerst gestartet / ausgeführt wird.

Chandra Malla
quelle
1

Es ist möglich, dass das OP in dieser Frage versucht, eine App.Config innerhalb einer DLL zu verwenden.

In diesem Fall versucht der Code tatsächlich, auf die App.Config der ausführbaren Datei und nicht auf die DLL zuzugreifen. Da der Name nicht gefunden wird, wird eine Null zurückgegeben, daher die angezeigte Ausnahme.

Der folgende Beitrag kann hilfreich sein: ConnectionString aus app.config einer DLL ist null

Andrew
quelle
0

Ich habe auf die System.ConfigurationBibliothek verwiesen und habe den gleichen Fehler. Die Debug-Dateien hatten nicht ihre app.config, erstellen Sie diese Datei manuell. Der Fehler ist, ich habe dieses Problem beim Kopieren der Datei "appname.exe.config" im Debug-Ordner behoben. Die IDE hat die Datei nicht erstellt.

jjcaicedo
quelle
0

Ich habe das Problem gelöst, indem ich den Index zum Lesen des Strings verwendet und nacheinander überprüft habe. Das Lesen mit dem Namen führt immer noch zum gleichen Fehler.
Ich habe das Problem, wenn ich eine C # -Fensteranwendung entwickle. Ich hatte das Problem nicht in meiner asp.net-Anwendung. Es muss etwas in der Einstellung sein, das nicht stimmt.

tau17
quelle