none
[RESOLVIDO] Erro estranho - A Propriedade connectionstring não foi inicializada RRS feed

  • 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



    sexta-feira, 9 de maio de 2014 18:15

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 !
    sexta-feira, 9 de maio de 2014 19:21
  • 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 !

    sexta-feira, 9 de maio de 2014 19:32

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 !
    sexta-feira, 9 de maio de 2014 19:21
  • 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

    sexta-feira, 9 de maio de 2014 19:28
  • 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 !

    sexta-feira, 9 de maio de 2014 19:32
  • 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

    sexta-feira, 9 de maio de 2014 19:53