Error in user registration, changing user instead insert

Asked

Viewed 63 times

2

My problem is the following, I saw that when I edit a record , it works, the registration is changed, but when I want to register a new user, it falls in the editing condition, it edits the registration information I was changing previously, not letting register a new user, because this happens?

Variable responsible for validating whether or not you are editing.

private int codigoEditar = 0;

Method responsible for searching 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 as parameter the employee code, placing the user information in 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);

            }
        }

Classe Dao

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 Package Workers Class Control Method

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!");

            }

        }

    }

Method of changing the control package of the staff class

//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());

    }



}
  • I ask for your help to fix the problem.

1 answer

5


From what I understand, he is registering normally, but after editing any registration, he does not register again, he just edits the previous registration, if that is, follows the solution:

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

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

You will enter only on condition that you enter codigoEditar be equal to zero.

Solution: After changing the registration, just reset the variable codigoEditar, you can do this in several ways, both zeroing by clicking on some button cadastrar, or zeroing after finalizing the registration change.

Tip: Instead of setting the variable codigoEditar, as inteiro, you can define it as booleana, whereas she is only true or false. Simplifying If and Else.

if(codigoEditar){
     manutencao.inserir(func);
}else{
     manutencao.alterar(func);
}
  • Your solution worked, I put the codeSedite on Else, thanks for your help!.

  • In need, we are there!

Browser other questions tagged

You are not signed in. Login or sign up in order to post.