Erro ao Atualizar Dados no MySQL

Olá pessoal,

Eu estou com problemas ao atualizar os dados do banco de dados. Estou desenvolvendo um cadastro de clientes e para atualizar primeiro eu faço a procura dos seus dados. Encontrando ele seta os dados do BD, vai para o Bean e ai o valor de bean e retornado para os campos para atualização e exclusão de dados. Abaixo está o código de atualização que fiz

public void atualizaCliente(String identificacao, String nome, String endereco, String bairro, 
							String telefone, String celular, String nascimento,
							String profissao, String telefone_trabalho,
							String endereco_trabalho){
        
        //atribuindo os valores para os beans
		cliente.setNome(nome);
		cliente.setEndereco(endereco);
		cliente.setBairro(bairro);
		cliente.setTelefone(telefone);
		cliente.setCelular(celular);
		cliente.setNascimento(nascimento);
		cliente.setProfissao(profissao);
		cliente.setTelefone_trabalho(telefone_trabalho);
		cliente.setEndereco_trabalho(endereco_trabalho);
                
        try {
            Connection conn = null;
            PreparedStatement pst = null;
            ConexaoDAO dao = new ConexaoDAO();
            String atualiza = "UPDATE tb_clientes SET identificacao=?, nome=?, endereco=?, telefone=?, celular=?, nascimento=?, "+
                              "profissao=?, telefone_trabalho=?, endereco_trabalho=?, bairro=? WHERE identificacao='"+identificacao+"'";
            
            conn = dao.conectaDados();
            
            pst = conn.prepareStatement(atualiza);
                
                pst.setString(2, nome);
                pst.setString(3, endereco);
                pst.setString(4, telefone);
                pst.setString(5, celular);
                pst.setString(6, nascimento);
                pst.setString(7, profissao);
                pst.setString(8, telefone_trabalho);
                pst.setString(9, endereco_trabalho);
                pst.setString(10, bairro);
                
                pst.clearParameters();
                
                //Mostra mensagem ao usuario que foi atualizado o registro
                JOptionPane.showMessageDialog(null, "Cliente atualizado com sucesso!", "Registro Atualizado", JOptionPane.INFORMATION_MESSAGE);
                                                       

        } catch (Exception exception) {
            JOptionPane.showMessageDialog(null, "Erro ao atualizar o cliente:"+exception.toString(), "Erro no Sistema", JOptionPane.ERROR_MESSAGE);
        }

    }
}

Eu procurei o erro mas ainda não encontrei! :slight_smile:

Mas se poderem me ajudar, eu desde já agradeço galera!!!

FLW!!!

faz muito tempo que nao uso jdbc

mas se nao me engano

pst.setString(2, nome); isso aki nao teria que ter o get do objeto?

nao ficaria assim? pst.setString(2, cliente.getNome(nome); )

Assim fica meio dificil, coloque o erro para avaliarmos…

Eu vou tentar isso. Com certeza não está recebendo os dados pq ele não pegou os dados retornados dos campos de texto.
VLW pela ajuda!!

O erro é que ao clicar em atualizar, mostra mensagem normal que atualizou. Mas quando volto a pesquisa no mesmo registro, ele não atualizou nada, como se não recebesse nenhum valor a mais.

Obrigado pelo toque!!

Cara…tem bastante coisa errada ai…Verifique se os valores estão chegando nos objetos.
Quando voce manda executar a query esta sendo feito assim:

  pst.clearParameters();   

Isso nunca vai funcionar…

Precisa ser usado pst.executeUpdate();

Segue abaixo um exemplo basico e com isso você conseguirá seguir com seu projeto…


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class UpdateRecordsUsingPreparedStatement {
  public static Connection getConnection() throws Exception {
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@localhost:1521:databaseName";
    String username = "name";
    String password = "password";
    Class.forName(driver);
    Connection conn = DriverManager.getConnection(url, username, password);
    return conn;
  }

  public static void main(String[] args) throws Exception {
    Connection conn = null;
    PreparedStatement pstmt = null;
    try {
      conn = getConnection();
      String query = "update dept set DEPT_LOC = ? where DEPT_NUM = ? ";
      pstmt = conn.prepareStatement(query); // create a statement
      pstmt.setString(1, "deptLocation"); // set input parameter 1
      pstmt.setInt(2, 1001); // set input parameter 2
      pstmt.executeUpdate(); // execute update statement
    } catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    } finally {
      pstmt.close();
      conn.close();
    }
  }
}

até.

VLW pela ajuda!!!

Agora deu certo. Abaixo está o código corrigido:

public void atualizaCliente(String identificacao, String nome, String endereco, String bairro, 
							String telefone, String celular, String nascimento,
							String profissao, String telefone_trabalho,
							String endereco_trabalho){
        
        //atribuindo os valores para os beans
                cliente.setIdentificacao(identificacao);
		cliente.setNome(nome);
		cliente.setEndereco(endereco);
		cliente.setBairro(bairro);
		cliente.setTelefone(telefone);
		cliente.setCelular(celular);
		cliente.setNascimento(nascimento);
		cliente.setProfissao(profissao);
		cliente.setTelefone_trabalho(telefone_trabalho);
		cliente.setEndereco_trabalho(endereco_trabalho);
                
        try {
            Connection conn = null;
            PreparedStatement pst = null;
            ConexaoDAO dao = new ConexaoDAO();
            String atualiza = "UPDATE tb_cliente SET identificacao=?, nome=?, endereco=?, telefone=?, celular=?, nascimento=?, "+
                              "profissao=?, telefone_trabalho=?, endereco_trabalho=?, bairro=? WHERE identificacao='"+identificacao+"'";
            
            conn = dao.conectaDados();
            
            pst = conn.prepareStatement(atualiza);
                pst.setString(1, cliente.getIdentificacao());
                pst.setString(2, cliente.getNome());
                pst.setString(3, cliente.getEndereco());
                pst.setString(4, cliente.getTelefone());
                pst.setString(5, cliente.getCelular());
                pst.setString(6, cliente.getNascimento());
                pst.setString(7, cliente.getProfissao());
                pst.setString(8, cliente.getTelefone_trabalho());
                pst.setString(9, cliente.getEndereco_trabalho());
                pst.setString(10, cliente.getBairro());
                
                pst.executeUpdate();
                
                pst.clearParameters();
                
                //Mostra mensagem ao usuario que foi atualizado o registro
                JOptionPane.showMessageDialog(null, "Cliente atualizado com sucesso!", "Registro Atualizado", JOptionPane.INFORMATION_MESSAGE);
                                                       

        } catch (Exception exception) {
            JOptionPane.showMessageDialog(null, "Erro ao atualizar o cliente:"+exception.toString(), "Erro no Sistema", JOptionPane.ERROR_MESSAGE);
        }

    }
}

VLW pela ajuda de vcs dois!!!