Obtenga la cadena de conexión de App.config

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

Y esta es mi 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>

Pero cuando mi proyecto se ejecuta, este es mi error:

Referencia a objeto no establecida como instancia de un objeto.

Moham ad Jafari
fuente
55
¿Dónde pusiste esa App.config? Proyecto de aplicación que está ejecutando o tal vez algún dll? Primero necesitas
abatishchev
3
Agregue una referencia a System.Configuration.dll y debería poder usar System.Configuration.ConfigurationManager.
daszarrin
Su cadena de conexión tiene un error tipográfico. Necesita un espacio entre "Integrado" y "Seguridad"
Onur Omer
@OnurOmer: la pregunta se ha actualizado para incluir el espacio ("Seguridad integrada" en lugar de "Seguridad integrada")
SlimsGhost

Respuestas:

484

¿No puedes hacer lo siguiente?

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

Su ensamblaje también necesita una referencia a System.Configuration.dll

Duffp
fuente
14
Sé que esta es una pregunta de C #, pero como esta es la parte superior de los resultados de búsqueda de Google, para hacer esto en VB, es System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringpara aquellos de nosotros que tenemos que mantener el código VB
JFA
296

Como esta es una pregunta muy común, he preparado algunas capturas de pantalla de Visual Studio para que sea fácil de seguir en 4 simples pasos.

obtener la cadena de conexión de app.config

Fredrick Gauss
fuente
22
Amo esta respuesta. Por defecto, en mi versión de VS (VS2012 Ultimate) esta biblioteca no está incluida, pero using System.Configurationaún funciona
David Colwell
3
Realmente TENÍA que agregar la referencia o el uso no estaba subrayado pero aún se desconoce ConfigurationManager. ¡Gracias!
CodingYourLife
33
string str = Properties.Settings.Default.myConnectionString; 
gjijo
fuente
1
¿Qué sucede si se agrega app.config como un enlace a un proyecto?
FrenkyB
2
Esto solo funcionará si su cadena de conexión es una configuración de la aplicación, no funcionará si recupera <connectionStrings>elementos de app.config (¡que es lo que está pidiendo el OP!).
BrainSlugs83
31

También verifique que haya incluido el System.Configurationdll bajo sus referencias. Sin él, no tendrá acceso a la ConfigurationManagerclase en el espacio de nombres System.Configuration.

Carl Heinrich Hancke
fuente
22

Primero agregue una referencia de System.Configurationa su página.

using System.Configuration;

Luego, según su app.config, obtenga la cadena de conexión de la siguiente manera.

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

Eso es todo, ahora tiene su cadena de conexión en la mano y puede usarla.

Tapan kumar
fuente
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
fuente
6

Probar esto

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

1) Cree un nuevo formulario y agregue esto:

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

luego, cuando desee utilizar la conexión, haga esto en su forma:

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

y eso es. Estarás conectado a la base de datos y podrás hacer cosas.

Esto es para vb.net pero la lógica es la misma.

OREO
fuente
3

Has probado:

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

Tuve el mismo problema. mi solución fue construida a partir de dos proyectos. A Class libraryy un sitio web que hace referencia al proyecto de biblioteca de clases. el problema era que estaba intentando acceder App.configa mi Class libraryproyecto pero el sistema estaba buscando en Web.configel sitio web. Puse la cadena de conexión dentro Web.configy ... ¡problema resuelto!

La razón principal fue que, a pesar de que ConfigurationManagerse usó en otro ensamblaje, estaba buscando dentro del proyecto en ejecución.

AmiNadimi
fuente
3

Puede usar este método para obtener la cadena de conexión

using System; 
using System.Configuration;

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

Primero debe agregar una System.Configurationreferencia a su proyecto y luego usar el siguiente código para obtener la cadena de conexión.

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

Esto funcionó para mí:

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

Salidas:

Fuente de datos = .; Catálogo inicial = OmidPayamak; IntegratedSecurity = True "

Talha Imam
fuente
1

Puede buscar la cadena de conexión utilizando la siguiente línea de código:

using System; using System.Configuration;

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

Aquí hay una referencia: Cadena de conexión de App.config

somesh
fuente
2
Hice lo mismo que dijiste, pero recibo el mismo error de referencia nula.
Enigmatic Mind
1

Parece que el problema no está relacionado con la referencia, está obteniendo la cadena de conexiones como nula, así que asegúrese de haber agregado el valor al archivo de configuración de su proyecto en ejecución, es decir, el programa / biblioteca principal que se inicia / ejecuta primero.

Chandra Malla
fuente
1

Es posible que el OP en esta pregunta esté tratando de usar una App.Config dentro de un dll.

En este caso, el código está intentando acceder a la App.Config del ejecutable y no al dll. Como no se encuentra el nombre, se devuelve un Nulo, de ahí la excepción que se muestra.

La siguiente publicación puede ser útil: ConnectionString de app.config de un archivo DLL es nulo

Andrés
fuente
0

Hice referencia a la System.Configurationbiblioteca y tengo el mismo error. Los archivos de depuración no tenían su app.config, cree manualmente este archivo. El error es que resolví esto copiando el archivo "appname.exe.config" en la carpeta de depuración. El IDE no fue crear el archivo.

jjcaicedo
fuente
0

Resolví el problema usando el índice para leer la cadena y verificando uno por uno. Leer usando el nombre todavía da el mismo error.
Tengo el problema cuando desarrollo una aplicación de ventana C #, no tuve el problema en mi aplicación asp.net. Debe haber algo en el entorno que no sea correcto.

rocío17
fuente