Usuário com melhor resposta
Como pegar uma connectionString do app.config

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
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
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] -
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 -
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
-
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] -
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