none
Como pegar uma connectionString do app.config RRS feed

  • Pergunta

  • Olá galera,
    Tenho um projeto ClassLibray que é responsavel pela minha conexão com o banco,
    como posso pegar a a string de conexão e o provedor de acesso atraves do codigo C#?

    No VB.NET sei que é só chamar My.Settings.NomeMinhaSTringConexao.ToString():

    detalhe:
    Eu utilizei o seguinte:
    string teste = ConfigurationManager.ConnectionStrings[varString].ConnectionString;

    Está instrução sempre dá um NullReferenceException, mesmo adicionando a referencia ao System.Configuration.dll
    Meu codigo:
    //Essa classe é feita apenas para pesquisar e retonar as strings de conexao e provider contidas no app.config
    public class DBConfig
    {
            private static DBConfig instanciaDbConfig;
            private string csStrCon;
            private string csStrPro;
            
    //padrão singlenton public static DBConfig GetDBConfig(StringConexao strCon) { if(instanciaDbConfig == null) { instanciaDbConfig = new DBConfig(strCon); } return instanciaDbConfig; } private DBConfig(StringConexao strCon) { //O erro tá aparecendo aqui! NullReferenceException ! csStrCon = ConfigurationManager.ConnectionStrings[strCon.ToString()].ConnectionString; csStrPro = ConfigurationManager.ConnectionStrings[strCon.ToString()].ProviderName; }


    public string GetStringConnection { get { return csStrCon; } }

    public string GetProviderConnection { get { return csStrPro; } } }

    //Esse aqui é o meu enumerador que é utilizado pra escolhar o nome correto da Provedor e ConnectionString: 
    public enum StringConexao
    {
            StrCon_SqlServer01,
            StrConnectionOngDotNET_MSS,
            StrConnectionOngDotNET_ACC
    }
    


    //Esse aqui é meu app.config
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <connectionStrings>
        <add
              name="StrCon_SqlServer01"
              connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=ongdotnet;Integrated Security=True"
              providerName="System.Data.SqlClient" />
      </connectionStrings>
    </configuration>
    




    O que eu faço ?
    E por que o configuaritonManager não pega em projeto de classe ?




    valeu galera
    Abraão Alves - Um eterno estudante
    quinta-feira, 26 de novembro de 2009 17:28

Respostas

  • Já resolvi o problema.

    Estava colocado as stringConection no projeto errado!
    Elas estavam inicialmente o mesmo projeto de acesso a dados, sendo que a seguinte linha:

    ConfigurationManager.ConnectionStrings["nomeConecaxao"].ConnectionString;

    Referencia a aplicação principal, a que vai ser executada primeiro como: Console, WinFormd ou Web.
    É por isso que aparecia um NullRefenceException, porque não havia nehum arquivo de configuração no projeto principal.


    Então galera não cometão o mesmo erro que eu, ok ?!
    O arquivo de cofiguração sempre fica no projeto a ser executado primeiro!
    Abraão Alves - Um eterno estudante
    • Marcado como Resposta Abraão Alves quarta-feira, 2 de dezembro de 2009 15:09
    quarta-feira, 2 de dezembro de 2009 15:08

Todas as Respostas

  • Olá

    O valor contido em "strCon.ToString()" é exatamente o mesmo do atributo "name" do app.config (no seu caso: StrCon_SqlServer01) ?

    O arquivo app.config existe na pasta da aplicação? Ele deve ter o nome no formato APLICACAO.EXE.config

    []s






    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    sexta-feira, 27 de novembro de 2009 00:15
  • Obrigado pela atenteção Robson:
    respostas:
    1º: SIM
    já fiz até o teste
    if(strCon.ToString() == "StrCon_SqlServer01")
     sempre retorna true

    2º SIM
    o arquivo app.config encontrasse no nivel de pasta principal do projeto
    , o arquivo DBAccessData.DLL.config encontrasse na pasta bin compilada e seu conteudo é o mesmo do app.config




    será q dá pra me ajudar ?
    Abraão Alves - Um eterno estudante
    sexta-feira, 27 de novembro de 2009 07:44
  • Já resolvi o problema.

    Estava colocado as stringConection no projeto errado!
    Elas estavam inicialmente o mesmo projeto de acesso a dados, sendo que a seguinte linha:

    ConfigurationManager.ConnectionStrings["nomeConecaxao"].ConnectionString;

    Referencia a aplicação principal, a que vai ser executada primeiro como: Console, WinFormd ou Web.
    É por isso que aparecia um NullRefenceException, porque não havia nehum arquivo de configuração no projeto principal.


    Então galera não cometão o mesmo erro que eu, ok ?!
    O arquivo de cofiguração sempre fica no projeto a ser executado primeiro!
    Abraão Alves - Um eterno estudante
    • Marcado como Resposta Abraão Alves quarta-feira, 2 de dezembro de 2009 15:09
    quarta-feira, 2 de dezembro de 2009 15:08
  • Olá

    Foi o que eu perguntei em

    "O arquivo app.config existe na pasta da aplicação? Ele deve ter o nome no formato APLICACAO.EXE.config"

    :)
    Que bom que conseguiu.

    []s
    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    quarta-feira, 2 de dezembro de 2009 21:56
  • Poisé Robson,
    Só não tinha conhecimento é de que esse arquivo deve estar obrigatoriamente no projeto principal e nem que o
    ConfigurationManager se referenciava ao app.Config do projeto principal.

    De qualquer forma obrigado pela ajuda.
    Abraão Alves - Um eterno estudante
    quinta-feira, 3 de dezembro de 2009 15:14