Usuário com melhor resposta
[RESOLVIDO] Erro estranho - A Propriedade connectionstring não foi inicializada

Pergunta
-
Olá amigos,
Estou com um problema estranho: Está aparecendo a mensagem de que a propriedade ConnectionString não foi inicializada, mas ela foi sim inicializada.
Vou explicar melhor pra poderem entender.
Faço a gravação num banco de dados utilizando uma StoredProcedure. Após a gravação, no mesmo método do Click do botão, eu chamo um outro método que preenche o GridView com as informações que foram gravadas.O problema está acontecendo quando eu chamo esse segundo método para preencher o GridView. Código abaixo:
protected void btnAddExames_Click(object sender, EventArgs e) { tr.CartaoLis = (string)Session["CartaoLis"]; tr.LogIP = Request.UserHostAddress; tr.TRId = (string)Session["TRId"]; tr.c3tbl376 = c1tbl25.SelectedValue; //Adiciona exames na tabela qd.AddExames(tr); //Carrega o Grid com as informações do exame gravado GridExames.DataSource = qd.GetExamesGrid(); GridExames.DataBind(); }
Aqui o método de gravação:
public void AddExames(TRS tr) { using (conn) { cmd = new SqlCommand("spr506", conn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter p1 = new SqlParameter("@msg", SqlDbType.VarChar, 220); p1.Direction = ParameterDirection.InputOutput; p1.Value = "LGUI0"; cmd.Parameters.Add(p1); SqlParameter p2 = new SqlParameter(); p2.ParameterName = "@Retorno"; p2.Direction = ParameterDirection.ReturnValue; p2.Value = 0; cmd.Parameters.Add(p2); conn.Open(); cmd.ExecuteNonQuery(); tr.Retorno = ev.RetornaMensagemDaProc((string)cmd.Parameters["@msg"].Value); tr.CodRetorno = (int)cmd.Parameters["@Retorno"].Value; cmd.Dispose(); conn.Close(); } }
Encurtei um pouco os parâmetros, pois eram 23 rsrs...
Agora aqui nesse método que ocorre o problema:
public DataTable GetExamesGrid() { query = "select c3tbl376,c2tbl25,c2tbl212,c2tbl213, " + "c11tbl376 = case c11tbl376 when 0 then 'Não' " + "when 1 then 'Sim' " + "end, " + "c5tbl357,c16tbl376,c17tbl376 " + "from tbl376,tbl213,tbl212,tbl25,tbl357 " + "where " + "c1tbl376 = @c1tbl376 " + "and " + "c3tbl376 = c1tbl25 " + "and " + "c6tbl376 = c1tbl212 " + "and " + "c7tbl376 = c1tbl213 " + "and " + "c8tbl376 = c42tbl25 " + "and " + "c42tbl25 = c1tbl357 " + "order by c3tbl376"; cmd = new SqlCommand(query, conn); SqlDataAdapter da = new SqlDataAdapter(cmd); SqlParameter p1 = new SqlParameter(); p1.ParameterName = "@c1tbl376"; p1.Direction = ParameterDirection.Input; p1.Value = tr.c1tbl374; cmd.Parameters.Add(p1); conn.Open(); //Aqui acontece o problema DataTable dt = new DataTable(); da.Fill(dt); cmd.Dispose(); conn.Dispose(); conn.Close(); return dt; }
Meu grid está preparado para receber todos os campos selecionados pelo Select.
Ambos métodos tem a ConnectionString inicializada.
A conexão está fixada no Web.Config. Eu instancio ela no inicio da classe de métodos.
public class QueriesDAL { #region Instanciação de Objetos SqlConnection conn = new SqlConnection(AcessoDB.ConnectionString); SqlCommand cmd = null; TRS tr = new TRS(); Eventos ev = new Eventos(); string query = ""; #endregion }
É estranho dar esse erro justamente na hora que vou carregar o Grid.
Poderiam me ajudar? Alguem já passou por essa experiência?
Cleverson Darsie
- Editado Cleverson Darsie sexta-feira, 9 de maio de 2014 19:54 Resolvido
Respostas
-
Olá, quando vc faz o insert vc faz o con.Close(); ou seja em que momento no método de preenchar a grid vc cria a instância de sua SqlConnection ! O erro é esse !
- Marcado como Resposta Cleverson Darsie sexta-feira, 9 de maio de 2014 19:55
-
Daniel,
Mesmo removendo o conn.Close() no fim do insert, quando vou preencher o GridView ele dá o mesmo erro.
Eu tentei isso também.
Cleverson Darsie
O que eu quis dizer é que vc tem que fazer um new SqlConnection para seu command, por exemplo em que momento vc faz con = new SqlConnection(); quando vai carregar o grid ! É isso que está faltando !
Um novo SqlConnection para seu Commadn !
- Marcado como Resposta Cleverson Darsie sexta-feira, 9 de maio de 2014 19:54
Todas as Respostas
-
Olá, quando vc faz o insert vc faz o con.Close(); ou seja em que momento no método de preenchar a grid vc cria a instância de sua SqlConnection ! O erro é esse !
- Marcado como Resposta Cleverson Darsie sexta-feira, 9 de maio de 2014 19:55
-
-
Daniel,
Mesmo removendo o conn.Close() no fim do insert, quando vou preencher o GridView ele dá o mesmo erro.
Eu tentei isso também.
Cleverson Darsie
O que eu quis dizer é que vc tem que fazer um new SqlConnection para seu command, por exemplo em que momento vc faz con = new SqlConnection(); quando vai carregar o grid ! É isso que está faltando !
Um novo SqlConnection para seu Commadn !
- Marcado como Resposta Cleverson Darsie sexta-feira, 9 de maio de 2014 19:54
-
Daniel,
Estranho, eu nunca precisei instanciar novamente o SqlConnection conn para realizar nenhuma operação.
A única vez que isntancio e quando os métodos da classe QueriesDAL são chamados para executar alguma função.Eu coloquei antes do cmd = new SqlCommand uma nova instancia do SqlConnection e funcionou.
Disse que era um erro estranho pois nunca havia acontecido isso antes rsrs.
Bom, funcionou como eu queria!
Obrigado Daniel!Cleverson Darsie