wake-up-neo.net

Verbindungszeichenfolge aus App.config abrufen

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 das mein Fehler:

Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt.

360
Moham ad Jafari

Können Sie nicht einfach Folgendes tun:

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

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

459
Duffp

Da dies eine sehr häufige Frage ist, habe ich einige Screenshots von Visual Studio vorbereitet, damit Sie sie in vier einfachen Schritten leicht nachvollziehen können.

get connection string from app.config

282
Fredrick Gauss
string str = Properties.Settings.Default.myConnectionString; 
32
gjijo

Überprüfen Sie auch, ob Sie die System.Configuration -Dll in Ihre Referenzen aufgenommen haben. Ohne sie haben Sie keinen Zugriff auf die Klasse ConfigurationManager im Namespace System.Configuration.

28

Fügen Sie Ihrer Seite zunächst einen Verweis auf System.Configuration hinzu.

using System.Configuration;

Dann erhalten Sie entsprechend 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.

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

Probieren Sie dies aus

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

1) Erstellen Sie ein neues Formular und fügen Sie Folgendes 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 die Verbindung verwenden möchten, tun Sie dies in Ihrer Form:

 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 gilt für vb.net, aber die Logik ist dieselbe.

3
OREO

Ich hatte das gleiche Problem. Meine Lösung wurde aus zwei Projekten aufgebaut. Ein Class library und eine Website, die auf das Klassenbibliotheksprojekt verweist. Das Problem war, dass ich versuchte, auf den App.config in meinem Class library -Projekt zuzugreifen, aber das System suchte in Web.config der Website. Ich habe die Verbindungszeichenfolge in Web.config eingefügt und ... das Problem wurde behoben!

Der Hauptgrund war, dass trotz der Verwendung von ConfigurationManager in einer anderen Assembly innerhalb des laufenden Projekts gesucht wurde.

3
AmiNadimi

Hast du es versucht:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);
3
Vlad Bezden
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
2
khatami

Sie können die Verbindungszeichenfolge mit der folgenden Codezeile abrufen:

using System; using System.Configuration;

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

Hier ist eine Referenz: Verbindungszeichenfolge aus App.config

1
somesh

Das hat bei mir funktioniert:

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

Ausgänge:

Datenquelle = .; Initial Catalog = OmidPayamak; IntegratedSecurity = True "

1
Talha Imam

Es scheint, dass das Problem nicht in Bezug auf das Problem besteht. Sie erhalten die Verbindungszeichenfolge als Null. Vergewissern Sie sich daher, dass Sie der Konfigurationsdatei Ihres laufenden Projekts den Wert hinzugefügt haben, dh das Hauptprogramm/die Hauptbibliothek, das/die zuerst gestartet/ausgeführt wird.

1
Chandra Malla

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

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

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 eines DLL ist null

1
Andrew

Ich habe das Problem gelöst, indem ich den Index verwendet habe, um die Zeichenfolge zu lesen und einzeln zu überprüfen. Lesen mit dem Namen gibt immer noch den 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.

0
dew17

Ich habe auf die Bibliothek System.Configuration 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 gelöst, indem ich die Datei "appname.exe.config" in den Debug-Ordner kopiert habe. Die IDE hat die Datei nicht erstellt.

0
jjcaicedo