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.


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


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


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; 

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.


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.


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

Probar esto

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

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.


3

Has probado:

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

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.


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

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

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

2

Esto funcionó para mí:

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

Salidas:

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


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


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.


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


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.