none
Erro a Executar Update em uma Tabela RRS feed

  • Pergunta

  • Bom dia

    Pessoal sou novo em programa com C# e estou com um problema em uma determinada parte de meu programa caso um registro seja encontrado eu devo executar um update em uma determinada tabela, esse programa ele importa vários arquivos txt para uma base dados fazendo integração entre dois sistemas, perfeito porém em algumas situações não todas ocorre o seguinte erro: ExecuteReader requer uma conexão aberta e disponível. O estado atual da conexão é fechada. Não consegui identificar sua causa e gostaria de saber como proceder para solucionar esse problema?

    Segue o código que estou utilizando nesse programa onde acredito estar ocorrendo o problema em questão:

                ConnectionProvider cp = new ConnectionProvider(ImportadorConf.banco, ImportadorConf.host);
                cp.connect();
                SqlConnection cnn = cp.getConnection();
                SqlCommand cmd = new SqlCommand(SQL, cnn);
                bool deu = false;
    
                try
                {
                    SqlDataReader sql = cmd.ExecuteReader();
                    if (sql.RecordsAffected == 1) 
                        deu = true;
                    else
                        deu = false;
                    sql.Close();
                }
                catch (Exception e)
                {
                    new Validador().erroSql(SQL, e.Message);
                }
    
                return deu;
    

    Alguem poderia me ajudar a resolver esse problema? Existe uma forma de otimizar esse código para não ocorrer mais erros?

    terça-feira, 19 de março de 2013 12:23

Respostas

  • Olá,

    O problema é que por algum motivo a conexão não está sendo aberta em algumas situações, para resolver o problema altere o seu código para testar a conexão:

       if (cnn.State == System.Data.ConnectionState.Open)
       {
           SqlDataReader sql = cmd.ExecuteReader();
           if (sql.RecordsAffected == 1)
                 deu = true;
           else
                 deu = false;
                 sql.Close();
       }
       else
           deu = false;

    • Editado Israel Vilela terça-feira, 19 de março de 2013 12:35
    • Sugerido como Resposta patrick.cosme terça-feira, 19 de março de 2013 13:12
    • Marcado como Resposta Felipo Gonçalves terça-feira, 19 de março de 2013 14:10
    terça-feira, 19 de março de 2013 12:34