[RESOLVIDO] Dúvida em um UPDATE utilizado dentro do java

Então, tenho uma tela de cadastro com o botão alterar que faz o UPDATE no banco e está funcionando certinho, realizando o UPDATE, porém o CPF que é a Primary Key no banco ele não está atualizando, está mantendo o que estava no banco.
E não encontrei nenhuma falha nos códigos, então não sei o por que não está alterando.

Os códigos são os seguintes:
VIEW
BOTÃO ALTERAR JOGA AS INFORMAÇÕES PARA OS CAMPOS

private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {                                           
    salvarAlterar = "altear";
    modelCadastroUsuarios = new ModelCadastroUsuarios();
    int linha = tabelaConsultaUsuarios.getSelectedRow();
    long codigo = 0;
    if (linha < 0) {
        JOptionPane.showMessageDialog(this, "Selecione um produto na tabela, antes de clicar em alterar!");
        limparCampos();
    } else {

        BLDatas bl = new BLDatas();

        codigo = (long) tabelaConsultaUsuarios.getValueAt(linha, 0);
        modelCadastroUsuarios = controllerCadastroUsuarios.retornarCadastroUsuariosController(codigo);

        fieldCPF.setText(String.valueOf(modelCadastroUsuarios.getCpf()));
        fieldNome.setText(modelCadastroUsuarios.getNome());
        fieldEmail.setText(modelCadastroUsuarios.getEmail());
        fieldTelefone.setText(String.valueOf(modelCadastroUsuarios.getTelefone()));
        try {
            fieldDataNascimento.setText(bl.converterDataUSParaDateString(modelCadastroUsuarios.getDataNascimento()));
        } catch (Exception ex) {
            Logger.getLogger(ViewCadastroUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        fieldUsuario.setText(modelCadastroUsuarios.getUsuNome());
        fieldSenha.setText(modelCadastroUsuarios.getUsuSenha());
    }

    habilitarDesabilitarCampos(true);
}

AGORA A FUNÇÃO DE SALVAR E ALTERAR
OBS: NESTE CÓDIGO O ALTERAR JÁ IRÁ CAIR NO ELSE, O IF SERÁ CASO A PESSOA ESCOLHA SALVAR UM NOVO CADASTRO.

public void salvar() {

    BLDatas bl = new BLDatas();

    modelCadastroUsuarios = new ModelCadastroUsuarios();
    modelCadastroUsuarios.setCpf(Long.parseLong(fieldCPF.getText()));
    modelCadastroUsuarios.setNome(fieldNome.getText());
    modelCadastroUsuarios.setEmail(fieldEmail.getText());
    modelCadastroUsuarios.setTelefone(Long.parseLong(fieldTelefone.getText()));
    try {
        modelCadastroUsuarios.setDataNascimento(bl.converterDataStringParaDate(fieldDataNascimento.getText()));
    } catch (Exception ex) {
        Logger.getLogger(ViewCadastroUsuario.class.getName()).log(Level.SEVERE, null, ex);
    }
    modelCadastroUsuarios.setUsuNome(fieldUsuario.getText());
    modelCadastroUsuarios.setUsuSenha(fieldSenha.getText());

    if (salvarAlterar.equals("salvar")) {
        if (controllerCadastroUsuarios.salvarCadastroUsuariosController(modelCadastroUsuarios) >= 0) {
            JOptionPane.showMessageDialog(this, "Cadastro de usuário realizado com sucesso!", "Notificação", JOptionPane.WARNING_MESSAGE);
            limparCampos();
            habilitarDesabilitarCampos(false);
            salvarAlterar = "salvar";
        } else {
            JOptionPane.showMessageDialog(this, "Erro ao cadastrar o usuário!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
    } else {
 if (controllerCadastroUsuarios.atualizarCadastroUsuariosController(modelCadastroUsuarios)) {
            JOptionPane.showMessageDialog(this, "Cadastro alterado com sucesso!", "Sucesso", JOptionPane.INFORMATION_MESSAGE);
            limparCampos();
            carregarCadastros();
            salvarAlterar = "alterar";
        } else {
            JOptionPane.showMessageDialog(this, "Erro ao alterar o cadastro!", "Erro", JOptionPane.ERROR_MESSAGE);
        }
    }
}

AGORA O UPDATE:

public boolean atualizarCadastroUsuariosDAO(ModelCadastroUsuarios pModelCadastroUsuarios) {
    try {
        this.conectar();
        return this.executarUpdateDeleteSQL(
                "UPDATE tbl_usuarios SET "
                + "pk_id_codigo = '" + pModelCadastroUsuarios.getCpf() + "',"
                + "cad_usu_nome = '" + pModelCadastroUsuarios.getNome() + "',"
                + "cad_usu_email = '" + pModelCadastroUsuarios.getEmail() + "',"
                + "cad_usu_telefone = '" + pModelCadastroUsuarios.getTelefone() + "',"
                + "cad_usu_dataNasc = '" + pModelCadastroUsuarios.getDataNascimento()+ "',"
                + "cad_usu_login = '" + pModelCadastroUsuarios.getUsuNome() + "',"
                + "cad_usu_senha = '" + pModelCadastroUsuarios.getUsuSenha() + "'"
                + " WHERE "
                + "pk_id_codigo = '" + pModelCadastroUsuarios.getCpf() + "'"
                + ";"
        );
    } catch (Exception e) {
        e.printStackTrace();
        return false;
    } finally {
        this.fecharConexao();
    }
}

Uma pergunta antes de mais nada, porquê fazer isso?

A chave primária de registros não é pra ser atualizada mesmo, não faz sentido atualizar o identificador único do registro!

Eu gostaria que tivesse está opção por que é o CPF, e não um código serial no banco de dados.
E caso a pessoa cadastre errado o número de CPF tenha a opção de realizar a correção.

Evite usar chaves naturais. Use chaves burras (id autoincremento). Isso vai te poupar muita dor de cabeça.

Entendi, então irei criar um novo campo na minha tela para atribuir um código com auto incremento e defini-lo como primary key no banco de dados e também manter o CPF apenas como um segundo código para buscas.

A ideia é, se o CPF é sua PK, então não permita que o usuário possa cadastrar um CPF incorreto/inválido, se quiser manter CPF como PK, valide a informação antes da persistência na base!

Caso contrário, que eu recomendo fortemente é, faça da forma que o @Lucas_Camara mencionou!

Já alterei toda a tela, agora defini o código com auto incremento, está funcionando corretamente.
Obrigado.

1 curtida