Récupère la chaîne de connexion depuis App.config


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

Et voici mon 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>

Mais lorsque mon projet s'exécute, voici mon erreur:

La référence d'objet n'est pas définie à une instance d'un objet.


5
Où avez-vous mis ce App.config? Projet d'application que vous exécutez ou peut-être une DLL? Vous devez d'abord
abatishchev

3
Ajoutez une référence à System.Configuration.dll et vous devriez pouvoir utiliser System.Configuration.ConfigurationManager.
daszarrin

Votre chaîne de connexion a une faute de frappe. Vous avez besoin d'un espace entre "Intégré" et "Sécurité"
Onur Omer

@OnurOmer - la question a été mise à jour pour inclure l'espace ("Sécurité intégrée" au lieu de "Sécurité intégrée")
SlimsGhost

Réponses:


484

Ne pouvez-vous pas simplement faire ce qui suit:

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

Votre assemblage a également besoin d'une référence à System.Configuration.dll


14
Je sais que c'est une question C #, mais comme c'est le haut des résultats de recherche Google, pour le faire en VB, c'est System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringpour ceux d'entre nous qui doivent maintenir le code VB
JFA

296

Puisque c'est une question très courante, j'ai préparé quelques captures d'écran à partir de Visual Studio pour le rendre facile à suivre en 4 étapes simples.

obtenir la chaîne de connexion depuis app.config


22
J'adore cette réponse. Par défaut dans ma version de VS (VS2012 Ultimate) cette bibliothèque n'est pas incluse, mais using System.Configurationfonctionne toujours
David Colwell

3
J'AI VRAIMENT dû ajouter la référence ou l'utilisation n'a pas été soulignée mais reste ConfigurationManager inconnu. Merci!
CodingYourLife

33
string str = Properties.Settings.Default.myConnectionString; 

1
Que faire si app.config est ajouté en tant que lien vers un projet?
FrenkyB

2
Cela ne fonctionnera que si votre chaîne de connexion est un paramètre d'application, cela ne fonctionnera pas si vous souhaitez récupérer des <connectionStrings>éléments depuis app.config (ce que l'OP demande!).
BrainSlugs83

31

Vérifiez également que vous avez inclus la System.ConfigurationDLL sous vos références. Sans cela, vous n'aurez pas accès à la ConfigurationManagerclasse dans l'espace de noms System.Configuration.


22

Ajoutez d'abord une référence de System.Configurationà votre page.

using System.Configuration;

Ensuite, selon votre app.config, obtenez la chaîne de connexion comme suit.

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

Voilà, vous avez maintenant votre chaîne de connexion en main et vous pouvez l'utiliser.


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;     
}

6

Essayez ceci

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

3

1) Créez un nouveau formulaire et ajoutez ceci:

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

alors quand vous voulez utiliser la connexion faites ceci sous votre forme:

 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()

et c'est tout. Vous serez connecté à la base de données et pourrez faire des choses.

C'est pour vb.net mais la logique est la même.


3

As-tu essayé:

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

3

J'ai eu le même problème. ma solution a été construite à partir de deux projets. A Class libraryet un site Web faisant référence au projet de bibliothèque de classe. le problème était que j'essayais d'accéder à App.configdans mon Class libraryprojet mais le système cherchait dans Web.configle site Web. J'ai mis la chaîne de connexion à l'intérieur Web.configet ... problème résolu!

La principale raison était que, malgré ConfigurationManagerson utilisation dans un autre assemblage, il cherchait à l'intérieur du projet runnig.


3

Vous pouvez utiliser cette méthode pour obtenir une chaîne de connexion

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}

2
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;

2

Vous devez d'abord ajouter une System.Configurationréférence à votre projet, puis utiliser le code ci-dessous pour obtenir la chaîne de connexion.

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

2

Cela a fonctionné pour moi:

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

Les sorties:

Source de données =. Catalogue initial = OmidPayamak; IntegratedSecurity = True "


1

Vous pouvez récupérer la chaîne de connexion en utilisant la ligne de code ci-dessous -

using System; using System.Configuration;

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

Voici une référence: Connection String from App.config


2
J'ai fait la même chose que vous l'avez dit, mais la même erreur de référence nulle que je reçois.
Enigmatic Mind

1

Il semble que le problème ne soit pas lié à la référence, vous obtenez une chaîne de connexion nulle, alors assurez-vous d'avoir ajouté la valeur au fichier de configuration de votre projet en cours, c'est-à-dire le programme / bibliothèque principal qui est démarré / exécuté en premier.


1

Il est possible que l'OP dans cette question essaie d'utiliser un App.Config dans une DLL.

Dans ce cas, le code tente réellement d'accéder à l'App.Config de l'exécutable et non à la DLL. Puisque le nom n'est pas trouvé, vous obtenez un Null retourné, d'où l'exception indiquée.

Le message suivant peut être utile: ConnectionString de app.config d'une DLL est null


0

J'ai référencé la System.Configurationbibliothèque et j'ai la même erreur. Les fichiers de débogage n'avaient pas leur app.config, créez manuellement ce fichier. L'erreur est, j'ai résolu cela en copiant le fichier "appname.exe.config" dans le dossier de débogage. L'IDE n'a pas créé le fichier.


0

J'ai résolu le problème en utilisant l'index pour lire la chaîne et en vérifiant un par un. La lecture avec le nom donne toujours la même erreur.
J'ai le problème lorsque je développe une application de fenêtre C #, je n'ai pas eu le problème dans mon application asp.net. Il doit y avoir quelque chose dans le cadre qui n'est pas correct.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.