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.

Moham ad Jafari
la source
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

Duffp
la source
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

Fredrick Gauss
la source
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; 
gjijo
la source
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.

Carl Heinrich Hancke
la source
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.

Tapan kumar
la source
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
la source
6

Essayez ceci

string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;
vishu9219
la source
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.

OREO
la source
3

As-tu essayé:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);
Vlad Bezden
la source
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.

AmiNadimi
la source
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;
}
Hidayet R. Colkusu
la source
2
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;
khatami
la source
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();
Sagar Jaybhay
la source
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 "

Talha Imam
la source
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

somesh
la source
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.

Chandra Malla
la source
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

Andrew
la source
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.

jjcaicedo
la source
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.

rosée17
la source