Error in the user registry, changing the user instead insert

2

My problem is the following, I saw that when I edit a registry, it works, the registry changes, but when I want to register a new user, it falls into the edit condition, it edits the registry information that I was changing previously , not allowing a new user to register, why does this happen?

Variable responsible for validating whether or not you are editing.

private int codigoEditar = 0;

Method responsible for fetching the user code in the table.

JButton button_3 = new JButton("Editar");
        button_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                tabbedPane.setSelectedIndex(0);

                // Variável responsável por capturar a linha selecionada
                int linhaSelecionada = -1;
                // Busca a linha selecionada e armazena na variável
                // linhaSelecionada(tr)
                //
                linhaSelecionada = tabela.getSelectedRow();

                // Validar se uma linha foi selecionada
                if (linhaSelecionada >= 0) {
                    // Armazena a informação da primeira coluna da linha
                    // selecionada(td)
                    //coluna 0 código do funcionário
                    int codigoFuncionario = (int) tabela.getValueAt(linhaSelecionada, 0);

                buscarFuncionario(codigoFuncionario);
                } else {
                    JOptionPane.showMessageDialog(null, "Selecione uma " + "linha para alterar o Funcionário!");
                }
            }
        });

Method that receives the employee code as a parameter, putting the user information on the registration screen for change.

//recebe como parâmetro o código do funcionário
    protected void buscarFuncionario(int codigoFuncionario) {
         control.Funcionarios func = new control.Funcionarios();
         //laço foreach que percorre o arraylist referenciando o código do funcionário
         for (Funcionarios  funcio : func.listarFuncionarios(codigoFuncionario + "", 1)) {

             /*Funcionarios funcio é o Dao, para setar(set) e pegar(get)
              * func.listarFuncionarios(codigoFuncionario + "", 1)) códigoFuncionário + "" concatena o código com o parametro texto da pesquisa da 
              * classe control
              * 1 é a pesquisa por código do funcionário referenciando o parametro do código do funcionário
              */




             // Setar informações na tela de cadastro
                nome.setText(funcio.getNome());
                email.setText(funcio.getEmail());
                endereco.setText(funcio.getEndereco());
                telefone.setText(funcio.getTelefone());
                cpf.setText(funcio.getCpf_funcionario());



                //Variável que recebe o valor do codigo do usuário
                //importante para a alteração
                codigoEditar = funcio.getCodigo_funcionario();

            }

            cadastro.setVisible(true);
            listagem.setVisible(false);

        }

Method responsible for saving or changing the employee.

protected void salvar() {
                // Capturar informações que o usuário digitou
                String nome_funcionario = nome.getText();
                String cpf_funcionario = cpf.getText();
                String endereco_funcionario = endereco.getText();
                String email_funcionario = email.getText();
                String fone_funcionario = telefone.getText();
                String senha_funcionario = senha.getText();
                String rep_senha_funcionario= repsenha.getText();
                if(email_funcionario.equals("")&& cpf_funcionario.equals("")&&fone_funcionario.equals("")&&nome_funcionario.equals("")){
                    JOptionPane.showMessageDialog(null, "Preencha os campos");

                }else if(!rep_senha_funcionario.equals(senha_funcionario)){
                    JOptionPane.showMessageDialog(null, "As senhas são diferentes");

                    //validar se as senhas são iguais
                }else if(endereco_funcionario.equals("")){
                    JOptionPane.showMessageDialog(null, "O campo Endereço é Obrigatório!");
                }

                      // Criando o objeto 

 Funcionarios func = new Funcionarios();

                func.setNome(nome_funcionario);
                func.setEmail(email_funcionario);
                func.setTelefone(fone_funcionario);
                func.setSenha(senha_funcionario);
                func.setEndereco(endereco_funcionario);
                func.setCpf_funcionario(cpf_funcionario);
                func.setCodigo_funcionario(codigoEditar);

                control.Funcionarios manutencao = new control.Funcionarios();

            //validar se estamos cadastrando ou editando os registros
                if(codigoEditar == 0){
                    manutencao.inserir(func);

                }else{
                    manutencao.alterar(func);

                }

                limparInformacoes();
                tabbedPane.setSelectedIndex(1);

            }
        }

Dao class

package dao;

public class Funcionarios {

    private int codigo_funcionario;
    private String cpf_funcionario;
    private String email;
    private String endereco;
    private String nome;
    private String senha;
    private String telefone;

    public int getCodigo_funcionario() {
        return codigo_funcionario;
    }
    public void setCodigo_funcionario(int codigo_funcionario) {
        this.codigo_funcionario = codigo_funcionario;
    }
    public String getCpf_funcionario() {
        return cpf_funcionario;
    }
    public void setCpf_funcionario(String cpf_funcionario) {
        this.cpf_funcionario = cpf_funcionario;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getEndereco() {
        return endereco;
    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getSenha() {
        return senha;
    }
    public void setSenha(String senha) {
        this.senha = senha;
    }
    public String getTelefone() {
        return telefone;
    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }
}

Save method of the employee class control package

public void inserir(dao.Funcionarios func) {
        if (func != null) {
            // Variável de conexão de DB
            java.sql.Connection conn = null;

            try {
                conn = ConnectDB.conexaoDB();

                java.sql.PreparedStatement pstm;

                pstm = conn.prepareStatement(INSERT);
                pstm.setString(1, func.getCpf_funcionario());
                pstm.setString(2, func.getEmail());
                pstm.setString(3, func.getSenha());
                pstm.setString(4, func.getNome());
                pstm.setString(5, func.getEndereco());
                pstm.setString(6, func.getTelefone());

                // Envia para o banco de dados
                Boolean teste;
                teste = pstm.execute();

                // Validar inserção no banco de dados
                if (!teste) {
                    JOptionPane.showMessageDialog(null, "Funcionario cadastrado com sucesso!");

                } else {
                    JOptionPane.showMessageDialog(null, "Erro ao cadastrar o Funcionario!");
                }

                // Fecha a conexão com o banco de dados
                ConnectDB.fecharConexao(conn);

            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Erro ao cadastrar o Funcionario!");

            }

        }

    }

Change method of the employee class control package

//parametro objeto dao.funcionarios
public void alterar(dao.Funcionarios func) {
    java.sql.Connection conn = null;

    try {
        conn = ConnectDB.conexaoDB();

        //prepara a query
        java.sql.PreparedStatement pstm;

        pstm = conn.prepareStatement(UPDATE);
        pstm.setString(1, func.getCpf_funcionario());
        pstm.setString(2, func.getEmail());
        pstm.setString(3, func.getNome());
        pstm.setString(4, func.getEndereco());
        pstm.setString(5, func.getTelefone());
    pstm.setString(6, func.getSenha());
        pstm.setInt(7, func.getCodigo_funcionario());

        // Envia para o banco de dados
        Boolean teste;
        teste = pstm.execute();

        // Validar inserção no banco de dados
        if (!teste) {
            JOptionPane.showMessageDialog(null, "Funcionario alterado com sucesso!");

        } else {
            JOptionPane.showMessageDialog(null, "Erro ao alterar o funcionario!");
        }

        // Fecha a conexão com o banco de dados
        ConnectDB.fecharConexao(conn);

    } catch (SQLException e) {
        JOptionPane.showMessageDialog(null, "Erro ao alterar o funcionario!"+e.getMessage());

    }



}
    
asked by anonymous 09.11.2016 / 13:36

1 answer

5

So I understand, it is registering normally, but after editing any register, it does not register again, it only edits the previous register, if it is, follow the solution:

In the method responsible for saving, or editing a record:

if(codigoEditar == 0){
    manutencao.inserir(func);
}else{
    manutencao.alterar(func);
}

It will only enter the condition of insertion, if the codigoEditar is equal to zero .

Solution: After changing the registry, simply reset the codigoEditar variable, you can do this in several ways, either by zeroing on a cadastrar button, or by zeroing after finishing the registry change.

Tip: Instead of setting codigoEditar to inteiro , you can set it to booleana , assuming it is only true or false . Simplifying If and Else.

if(codigoEditar){
     manutencao.inserir(func);
}else{
     manutencao.alterar(func);
}
    
09.11.2016 / 17:21