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.

Moham ad Jafari
fonte
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

Duffp
fonte
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

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

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

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

Experimente isso

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

OREO
fonte
3

Você tentou:

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

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

Isso funcionou para mim:

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

Saídas:

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

Talha Imam
fonte
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

somesh
fonte
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.

Chandra Malla
fonte
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

Andrew
fonte
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.

jjcaicedo
fonte
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.

dew17
fonte