none
Erro ao recuperar DataGrid após editar dados no MySQL(RESOLVIDO) RRS feed

  • Pergunta

  • Boa noite, 

    Pessoal estou com um problema em um método que criei.Após editar um dado no banco e chamar o método para atualizar o DataGrid da o seguinte erro: An unhandled exception of type'System.ArgumentException' occured in System.Data.dll.Additional information:Não é possível limpar a lista.

    Claramente o erro é causado por tentar limpar a lista e repopular a mesma com os dados atualizados usando um foreach.Abaixo segue o método que criei para recuperar os dados.

    private void recuperarDados()
            {
                
                dataGridView1.Rows.Clear();
                //SQL 
                string sql = "SELECT * FROM condomino";
                cmd = new MySqlCommand(sql, CONEXAO);
    
                //Abrindo Conexao , Recuperando , Preenchendo datagrid
                try
                {
                    CONEXAO.Open();
                    adapter = new MySqlDataAdapter(cmd);
                    adapter.Fill(dt);
                    //Loop Preenchimento DataGrid
                     foreach (DataRow row in dt.Rows)
                     {
                         addToDataGrid(row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString(), row[4].ToString(), row[5].ToString(), row[6].ToString(), row[7].ToString(), row[8].ToString(), row[9].ToString(),row[10].ToString());
                     }                
                    CONEXAO.Close();
    
                    //Limpando DTGRID
                     dt.Rows.Clear();
                     limparTxts();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    CONEXAO.Close();
                }
            }
    Alguém tem alguma noção do que pode estar acontecendo?Para esclarecer melhor , segue o código do método que da UPDATE no banco.
    private void atualizar(int id, string nome, string endereco, string cpf, string rg, string apartamento, string telefone, string Celular, string animais, string qtdanimais, string observacao)
            {
                //SQL STRING        
                string sql = "UPDATE condomino SET Nome='" + nome + "',Endereco='" + endereco + "',Cpf='" + cpf + "',Rg='" + rg + "',Apartamento='" + apartamento + "',Telefone='" + telefone + "',Celular='" + Celular + "',Animais='" + animais + "',QtdAnimais='" + qtdanimais + "',Observacao='" + observacao + "'WHERE idCodCondonimo=" + id + "";
                cmd = new MySqlCommand(sql, CONEXAO);
                //Abrindo conexao , atualizando os dados , Recuperando DataGrid
                try
                {
                    CONEXAO.Open();
                    adapter = new MySqlDataAdapter(cmd);
    
                    adapter.UpdateCommand = CONEXAO.CreateCommand();
                    adapter.UpdateCommand.CommandText = sql;
    
                    if (adapter.UpdateCommand.ExecuteNonQuery() > 0)
                    {
                        limparTxts();
                        MessageBox.Show("Dados Atualizados");
                    }
    
                    CONEXAO.Close();
                    recuperarDados();
                }
    
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    CONEXAO.Close();
                }
    Desde já agradeço.


    quinta-feira, 12 de maio de 2016 23:12

Respostas

  • Olá, após fazer vários testes, eu encontrei o erro, estava tratando de forma errada os meus maskedTextBox3.text, e por algum motivo que ainda não descobri, estava dando erro em um método nada a ver.
    • Marcado como Resposta Marcos SJ sexta-feira, 13 de maio de 2016 12:26
    sexta-feira, 13 de maio de 2016 02:47

Todas as Respostas

  • Boa noite,

    Simulei testes com seu código mas aqui não apresentou erros...
    Da erro ao limpar o DataGridView ou DataTable ? Qual alinha?
    Dentro do método "addToDataGrid" você apenas adiciona na grid ou faz algum processamento?

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 13 de maio de 2016 00:22
  • Atualizar o grid ou atualizar os dados? Pelo o que eu vi seu método é para executar um update no banco e não atualizar o grid.
    sexta-feira, 13 de maio de 2016 00:36
  • Boa noite,

    Lailson, no método que atualiza os dados ele chama o método que atualiza os dados....


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    sexta-feira, 13 de maio de 2016 00:41
  • Olá Silvaney,

    O erro é ao tentar limpar o DataGridView, o sistema trava na seguinte linha do método recuperarDados();:

    dataGridView1.Rows.Clear();
    Porém isso só acontece após eu selecionar uma linha do DataGrid, editar os dados e atualiza-los, se eu somente pesquisar todos os dados e depois mandar limpar o formulário , ele não dispara o erro nenhum, por isso penso que o erro esta no método recuperarDados();

    sexta-feira, 13 de maio de 2016 02:21
  • Olá, após fazer vários testes, eu encontrei o erro, estava tratando de forma errada os meus maskedTextBox3.text, e por algum motivo que ainda não descobri, estava dando erro em um método nada a ver.
    • Marcado como Resposta Marcos SJ sexta-feira, 13 de maio de 2016 12:26
    sexta-feira, 13 de maio de 2016 02:47