Jump to content
Sign in to follow this  
prf99

Erro no cadastro de usuários, alterando o usuário ao invés inserir

Recommended Posts

Meu problema é o seguinte, vi que quando edito um registro , funciona, o cadastro é alterado, mas quando eu quero cadastrar um novo usuário, ele cai na condição de edição, ele edita as informações do cadastro que eu estava alterando anteriormente, não deixando cadastrar um novo usuário, porque isso acontece?

Variável responsável por validar se está editando ou não.

private int codigoEditar = 0;

Método responsável por buscar o código do usuário na tabela.

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

Método que recebe como parâmetro o código do funcionário, colocando as informações do usuário na tela de cadastro para alteração.

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

Método responsável por salvar ou alterar o funcionário.

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

Método de salvar do pacote control da classe funcionários

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

Método de alterar do pacote control da classe funcionários

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

Peço ajuda de vocês para corrigir o problema.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By Camilavip
      Queria saber como fazer esse select e quando eu trazer um estado ele já puxa as cidades contidos nele, e ao escolher a cidade ele trazer os bairros. Consegui pela internet mas só com estados e cidades. no caso em 2 níveis, e eu precisaria em 3, faço pelo mysqli
       
      Em estados no banco está assim
      CREATE TABLE `estados` ( `id_estado` int(10) NOT NULL, `estado` varchar(30) NOT NULL ) ENGINE=Aria DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `estados` -- INSERT INTO `estados` (`id_estado`, `estado`) VALUES (1, 'Rio de Janeiro'), (2, 'Minas Gerais'); Cidades
      CREATE TABLE `cidades` ( `id_cidade` int(10) NOT NULL, `id_estado` int(10) NOT NULL, `cidade` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `cidades` -- INSERT INTO `cidades` (`id_cidade`, `id_estado`, `cidade`) VALUES (1, 1, 'Rio de Janeiro'), (2, 2, 'Belo Horizonte'); E bairros
      CREATE TABLE `bairros` ( `id_bairro` int(10) NOT NULL, `id_cidade` int(10) NOT NULL, `bairro` varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Extraindo dados da tabela `bairros` -- INSERT INTO `bairros` (`id_bairro`, `id_cidade`, `bairro`) VALUES (1, 1, 'Centro'), (2, 1, 'Tijuca'), (3, 1, 'Leblon'), (4, 2, 'Pampulha');  
    • By acneto.frc
      Tenho uma aplicação WEB NodeJs+Javascript. Na minha view (FILTROS PARA RELATÓRIO) além dos inputs tenho um radio button onde seleciono o tipo de do relatório que será gerado. No meu Controller tenho acesso aos campos inputs (type=text) normalmente mas não tenho acesso aos inputs (type=radio). Abaixo vou colocar parte do código.
       
      <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- As 3 meta tags acima *devem* vir em primeiro lugar dentro do `head`; qualquer outro conteúdo deve vir *após* essas tags --> <title><%= title %></title> <link rel="stylesheet" type="text/css" media="screen" href="/estilos/estilos.css" /> </head> <body> <header> <nav class="menuBase"> <ul> <li><a href="/">Início</a></li> <li><a href="/estagio/relatorios">Voltar</a></li> <li><a href=""> </a></li> </ul> </nav> </header> <main class=frmRelFiltros> <ul class="nav nav-tabs"> <li class="active" id="home-tab"><a data-toggle="tab" href="#pagina1">Relatório de Contratos</a></li> </ul> <div class="tab-content"> <div id="pagina1" class="tab-pane fade in active"> <form action='/contratos/relatorios/RelContratosPrint' method="post" id="relAlunos"> <!-- primeira linha --> <br> <div class="filtros" style="margin:15px"> <div class="row"> <div class="form-group col-md-6 col-md-offset-0"> <label>Código Contrato.:</label> <input type="text" name="cod_ini" value="0"/> A <input type="text" name="cod_fim" value="999999" /> <br> <br> <label>Ativo/Inativo...:</label> <input type="text" name="atv_ini" value="A"/> A <input type="text" name="atv_fim" value="Z" /> <br> <br> <label>Data Cadastro...:</label> <input type="text" name="cad_ini" value="01/01/2000"/> A <input type="text" name="cad_fim" value="31/12/2090" /> <br> <br> <label>Data Vigência...:</label> <input type="text" name="vig_ini" value="01/01/2000"/> A <input type="text" name="vig_fim" value="31/12/2090" /> <br> <br> <label>Sit. Contrato...:</label> <input type="text" name="sit_ini" value="0"/> A <input type="text" name="sit_fim" value="99" /> <br> <br> <label>Código do Curso.:</label> <input type="text" name="cur_ini" value="1"/> A <input type="text" name="cur_fim" value="99" /> <br> <br> </div> <div class="form-group col-md-6 col-md-offset-0"> <label>Código da Empresa.:</label> <input type="text" name="emp_ini" value="1"/> A <input type="text" name="emp_fim" value="9999" /> <br> <br> <label>Centro Integração.:</label> <input type="text" name="cie_ini" value="1"/> A <input type="text" name="cie_fim" value="999"/> <br> <br> <label>Valor da Bolsa....:</label> <input type="text" name="vlr_ini" value="1"/> A <input type="text" name="vlr_fim" value="99999999"/> <br> <br> <br> <div id="opcoesRelContratos" > <p>Selecione o Tipo do Relatório:</p> <input type="radio" id="tipoRel" name="padrao" value="padrao" checked=true> <label for="padrao">Padrao-Conferência</label><br> <input type="radio" id="tipoRel" name="faixa" value="faixa"> <label for="faixa">Faixa Salarial-Estatístico</label><br> <input type="radio" id="tipoRel" name="alunos_empresas" value="alunos_empresas"> <label for="alunos_empresas">Identificação de Alunos por Empresa</label> <br> <input type="radio" id="tipoRel" name="entregas" value="entregas"> <label for="entregas">Pastas de Estágios Entregues</label><br> <input type="radio" id="tipoRel" name="contratos_vencer" value="contratos_vencer"> <label for="contratos_vencer">Contratos a Vencer 30 dias</label> <br> </div> </div> </div> </div> <br> <!-- botões de acão --> <div class="btn-acao" style="margin-bottom: 0px;"> <div class="row"> <div class="col-md-2 col-md-offset-1"> <button id="btn-executarRel" type="submit" class="btn btn-primary btn-block" >Executar </button> </div> <div class="col-md-2 col-md-offset-1"> <button type="button" id="btn-cancelarRel" class="btn btn-primary btn-block">Voltar</button> </div> </div> </div> <br> </form> </div> <!-- tab pagina 1 --> </div> </main> <!-- JavaScript (Opcional) --> <!-- jQuery primeiro, depois Popper.js, depois Bootstrap JS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script> <script type="text/javascript" src="/js/funcoesCliente.js"></script> <script type="text/javascript" src="/js/script.js"></script> </body> </html>  
       
      Agora o código do routes e controllers. No controllers preciso acessar um elemento radio da view
      *** botão para submeter a view <button id="btn-executarRel" type="submit" class="btn btn-primary btn-block" >Executar </button> *** rota a ser executada ao sonfirmar a execução do relatório <form action='/contratos/relatorios/RelContratosPrint' method="post" id="relAlunos"> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arquivo: contratosRoutes.js var contratosControllers = require('../controllers/contratosControllers.js'); module.exports = (app) => { app.get('/contratos/relatorios/relContratos', contratosControllers.contratosRel); app.post('/contratos/relatorios/RelContratosPrint', contratosControllers.printContratosRel); } +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ arquivo: contratosControllers.js const alunosController = require('../models/contratosModels.js'); const cnf_ambiente = require('../../config/config.js'); const moment = require('moment'); module.exports = { printContratosRel, } function printContratosRel(req, res){ console.log("Data Inicial Normal: "+req.body.cad_ini) console.log("Data Final Normal..: "+req.body.cad_fim) console.log("++++++++++++++++++++ DATA NO FORMATO DE ENTRADA APÓS O POST ++########################") // ++++++++++++ BAIXO O ERRO document is not defined var radios = document.getElementsById("tipoRel"); for (var i = 0; i < radios.length; i++) { if (radios[i].checked) { console.log("Escolhido: " + radios[i].value); } } cod_i = req.body.cod_ini; cod_f = req.body.cod_fim; atv_i = req.body.atv_ini; atv_f = req.body.atv_fim; cad_i = req.body.cad_ini; cad_f = req.body.cad_fim; vig_i = req.body.vig_ini; vig_f = req.body.vig_fim; sit_i = req.body.sit_ini; sit_f = req.body.sit_fim; cur_i = req.body.cur_ini; cur_f = req.body.cur_fim; emp_i = req.body.emp_ini; emp_f = req.body.emp_fim; cie_i = req.body.cie_ini; cie_f = req.body.cie_fim; vlr_i = req.body.vlr_ini; vlr_f = req.body.vlr_fim; console.log("Relatório >>>>>>>>>>>>>>>>>>>>>>>> "+cad_i + ' - '+ cad_f); alunosController.buscarPrintContratosRel( cod_i, cod_f, vlr_i, vlr_f, sit_i, sit_f, cur_i, cur_f, emp_i, emp_f, cad_i, cad_f, vig_i, vig_f, atv_i, atv_f, cie_i, cie_f, function(err, result){ if(result){ console.log("Encontrei registro de contratos.... Vou tratar das datas.."); for(var i = 0; i < result.length; i++ ){ result[i].cea_dtcadastro = moment(result[i].cea_dtcadastro).format("DD/MM/YYYY"); result[i].cea_dtalteracao = moment(result[i].cea_dtalteracao).format("DD/MM/YYYY"); result[i].cea_vigenciainicial = moment(result[i].cea_vigenciainicial).format("DD/MM/YYYY"); result[i].cea_vigenciafinal = moment(result[i].cea_vigenciafinal).format("DD/MM/YYYY"); } } if (err) { throw err; } else{ res.render('estagios/relatorios/frm_relContratosPrint.ejs', {title: 'Contratos', nomeUsuario: global.nomeUsuario, codigoUsuario: global.codigoUsuario, nomeFormulario: req.originalUrl, obj_contratos: result, }); } }); }  
    • By danilo759
      Estou com uma dúvida, em uma tabelinha é cadastrado a data em uma coluna e a hora em outra coluna, então para "juntar" podemos usar CONCAT() no SELECT. Tudo certo...
       
      SELECT id, CONCAT(data_ini, ' ', hora_ini) as inicio FROM tabela

      Retorna como esperado:

       

      Minha dúvida é, se eu quiser exibir o horário de término para ficar assim como seria a consulta? Lembrando que não existe as colunas data_final e horario_final.

      2020-09-13 03:00:00 2020-09-13 04:00:00
      2020-09-13 04:00:00 2020-09-13 05:00:00
      2020-09-13 05:00:00 ....
    • By slaoxx
      Não conseguir obter êxito, minha sintaxe foi a seguinte:
       
      CREATE FUNCTION precomed ()
      RETURNS decimal
      SELECT AVG(preco_cd);
       
      SELECT precomed ();
       
    • By kaayasinho
      Boa tarde Pessoal tudo bom?
      Durante um tempo eu fui estudante de programação, para web. E esse forum me foi muito util pois aprendi muitas coisas, e tirei muitas duvidas com todos os participantes. Por outro lado não segui a carreira de programado pois tive outras oportunidades.
       
      Em fim, estou com um projeto de criar uma plataforma online para eventos, e estou tentando montar um time chegar nesse objetivo. Por hora ainda estou tentando juntando a equipe necessária para isso acontecer.
       
      Pela pouca experiência que tive na programação, sei que fazer essa plataforma é bem complexa principalmente com as necessidades que vamos englobar, porém o mercado esta escasso de plataformas flexíveis, no sentido de oferecer algumas ferramentas básicas na comunicação. apesar de ja existir algumas plataformas no mercado.
       
      Resumo:
      1-) Procuro por programadores backend com experiência (não sei exatamente informar a linguagem) mas chuto que Java, Javascript e PHP sejam fundamentais. (sei que abusaremos muito do AJAX)
       
      2-) Programador FrontEnd, com experiência. E que tenha principalmente em boas praticas, pois código sujo cheio de plugins tornará a plataforma pesada, e cheia de bugs.
       
      PS: Não procuro nada pronto, claro que plugins coisas são inevitáveis porém para funcionarmos Lisos com menos bugs possíveis procuro algo feito “artesanalmente” rsrs.
       
      Obs: o projeto esta no inicio ainda, estou juntando contatos para chegar no objetivo, e assim que tiver um contato gostaria de poder conversar trocar ideias, caso seja um projeto onde você se identifique nada impede de sermos parceiros ter uma % sobre o negocio.
       
       
      Obs2: Desculpem se escrevi meio enrolado ou esta complicado de entender. pois apenas disse plataforma de eventos e não especifiquei nada. mas assim que receber um contato eu passo mais informações com alguns links de exemplos, que é melhor que falar.
       
      E caso aqui seja o lugar correto posso passar mais informações por aqui também.
       
      Seguem alguns exemplos de plataforma de eventos online.
      Download de 2 PDFs de apresentações do mesmo segmento
       
      Site de uma das plataformas porém proximo do que almejamos
      https://www.swaper.com.br/
       
       
      Fico a disposição,
       
      Desculpem se postei no local incorreto
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.