Obter cadeia de conexão do App.config


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

E este é o meu 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>

Mas quando meu projeto é executado, este é o meu erro:

Referência de objeto não definida para uma instância de um objeto.


5
Onde você colocou esse App.config? Projeto de aplicação que você está executando ou talvez alguma dll? Você precisa primeiro
— abatishchev

3
Adicione uma referência ao System.Configuration.dll e você poderá usar o System.Configuration.ConfigurationManager.
— Daszarrin

Sua cadeia de conexão possui um erro de digitação. Você precisa de um espaço entre "integrado" e "Segurança"
— Onur Omer

@OnurOmer - pergunta foi atualizado para incluir o espaço ( "Integrated Security" em vez de "IntegratedSecurity")
— SlimsGhost

Respostas:


484

Você não pode simplesmente fazer o seguinte:

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

Sua montagem também precisa de uma referência para System.Configuration.dll


14
Eu sei que esta é uma questão C #, mas uma vez que este é o topo dos resultados do Google de busca, fazer isso em VB, é System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringpara aqueles de nós que têm que manter o código VB
— JFA

296

Como essa é uma pergunta muito comum, preparei algumas capturas de tela do Visual Studio para facilitar o acompanhamento em 4 etapas simples.

obter cadeia de conexão do app.config


22
Ame esta resposta. Por padrão na minha versão do VS (VS2012 Ultimate) esta biblioteca não está incluído, mas using System.Configurationainda funciona
— David Colwell

3
Eu realmente tive que adicionar a referência ou o uso não foi sublinhado, mas ainda é desconhecido o ConfigurationManager. Obrigado!
— CodingYourLife

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

11
E se app.config for adicionado como um link para um projeto?
— FrenkyB

2
Isso funcionará apenas se a cadeia de conexão for uma configuração de aplicativo, não funcionará se recuperar <connectionStrings>elementos do app.config (que é o que o OP está pedindo!).
— BrainSlugs83

31

Verifique também se você incluiu a System.Configurationdll em suas referências. Sem ele, você não terá acesso à ConfigurationManagerclasse no espaço para nome System.Configuration.


22

Primeiro Adicione uma referência System.Configurationà sua página.

using System.Configuration;

Então, de acordo com o seu app.config, obtenha a cadeia de conexão da seguinte maneira.

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

É isso agora que você tem sua cadeia de conexão em suas mãos e pode usá-la.


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

Experimente isso

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

3

1) Crie um novo formulário e adicione este:

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

quando você quiser usar a conexão, faça isso em seu formulário:

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

e é isso. Você estará conectado ao banco de dados e poderá fazer coisas.

Isso é para vb.net, mas a lógica é a mesma.


3

Você tentou:

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

3

Eu tive o mesmo problema. minha solução foi criada a partir de dois projetos. A Class librarye um site que faz referência ao projeto da biblioteca de classes. o problema era que eu estava tentando acessar o App.configem meu Class libraryprojeto, mas o sistema estava procurando no Web.configdo site. Coloquei a string de conexão dentro Web.confige ... problema resolvido!

O principal motivo foi que, apesar de ter ConfigurationManagersido usado em outra montagem, ele estava pesquisando dentro do projeto runnig.


3

Você pode usar esse método para obter a seqüência de conexão

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

Primeiro você precisa adicionar System.Configurationreferência ao seu projeto e depois usar o código abaixo para obter a string de conexão.

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

2

Isso funcionou para mim:

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

Saídas:

Fonte de dados = .; Catálogo inicial = OmidPayamak; IntegratedSecurity = True "


1

Você pode buscar a cadeia de conexão usando a linha de código abaixo -

using System; using System.Configuration;

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

Aqui está uma referência: String de conexão do App.config


2
Eu fiz o mesmo que você disse, mas o mesmo erro de referência nula que estou recebendo.
— Enigmatic Mind

1

Parece que o problema não está relacionado, você está obtendo a string de conexão como nula, portanto, certifique-se de ter adicionado o valor ao arquivo de configuração do seu projeto em execução, ou seja, o programa / biblioteca principal que é iniciado / executado primeiro.


1

É possível que o OP nesta pergunta esteja tentando usar um App.Config dentro de uma dll.

Nesse caso, o código está realmente tentando acessar o App.Config do executável e não da dll. Como o nome não foi encontrado, você recebe um Nulo retornado, daí a exceção mostrada.

A seguinte postagem pode ser útil: ConnectionString de app.config de uma DLL é nulo


0

Mencionei a System.Configurationbiblioteca e tenho o mesmo erro. Os arquivos de depuração não tinham o app.config, crie manualmente esse arquivo. O erro é que eu resolvi isso copiando o arquivo "appname.exe.config" na pasta de depuração. O IDE não foi criado o arquivo.


0

Resolvi o problema usando o índice para ler a string e verificando um por um. Ler usando o nome ainda dá o mesmo erro.
Eu tenho o problema quando desenvolvo um aplicativo de janela C #, não tive o problema no meu aplicativo asp.net. Deve haver algo na configuração que não está certo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.