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.