Jump to content

Archived

This topic is now archived and is closed to further replies.

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

  • Similar Content

    • By Negrito
      Olá Pessoal, 
       
      Converti o banco de dados de uma app em ASP Classico de MSSQL para MySQL para redução de custos e percebi que alguns componentes ou recursos não estão mais funcionando devido a não compatibilidade com o MySQL , como por exemplo a função : RecordCount
       
      Já consegui converter e atualizar 95% de aplicação para rodar com o MySQL, mas tem 1 item que esta tirando meu sono e após dias pesquisando, resolvi pedir ajuda.
       
      Segue o meu codigo abaixo , onde estou com problema no resultado dessa operação:
       
      <%
      ...
      Set RS = Server.CreateObject("ADODB.Recordset")
      RS.CursorLocation = 3
      RS.CursorType = 3
      RS.ActiveConnection = Cn
      RS.Open strSQL, Cn, 3, 3
      RS.PageSize = 25
      RS.CacheSize = RS.PageSize
      intPageCount = RS.PageCount
      intRecordCount = RS.RecordCount
          If NOT (RS.BOF AND RS.EOF) Then
      If CInt(intPage) > CInt(intPageCount) Then intPage = intPageCount
          If CInt(intPage) <= 0 Then intPage = 1
              If intRecordCount > 0 Then
                  RS.AbsolutePage = intPage
                  intStart = RS.AbsolutePosition
                  If CInt(intPage) = CInt(intPageCount) Then
                      intFinish = intRecordCount
                  Else
                      intFinish = intStart + (RS.PageSize - 1)
                  End if
              End If
          If intRecordCount > 0 Then
              For intRecord = 1 to RS.PageSize
          QntExibicoes = QntExibicoes + Rs.fields("views")
      ...
      %>
       
       
      Já percebi que a função RecordCount não pode ser usada com o MySQL ou pelo menos não é compativel.
       
      A paginação esta funcionando ! 
      Porem , não consigo fazer ele calcular a quantidade de linhas (rows) do MySQL com a função RecordCount e acredito que possa ter alguma outra função que não esta compativel , mas como não conheço MySQL , não posso afirmar.
       
      Enfim, algum pode me dar uma luz ?
       
      Desde já agradeço pela atenção.
       
      Obrigado.
    • By Adriano Costa
      Fala pessoal tudo blz? Gostaria de fazer uma pergunta sobre logica de programação, eu criei um ToDo List  em Java Web, no meu projeto eu tenho uma tela de login que depois de logar o usuário acessa a lista de tarefa dele, a minha pergunta é, como eu poderia fazer para que cada usuário tenha acesso somente a sua lista de tarefas. Me da uma luz de que forma eu poderia fazer essa logica. Desde já agradeço. 
    • By jgasper
      Olá, estou desenvolvendo um sistema de requisições para almoxarifado. Na tela de requisição o usuário terá a opção de incluir o item + quantidade que deseja, e haverá um botão + para poder adicionar mais itens. Porém não consigo pensar em como fazer isso ir para o banco e como salvar isso no pedido. Alguém tem algum exemplo ou pode me ajudar nesse caso?
    • By Sapinn
      Opa galera tudo beleza? Então meu banco está me retomando um erro quando tento inserir nele que é "Dados truncados na coluna valor_produto" essa coluna era do tipo Double quando eu mudei para ela para TEXT funcionou os dados foram inseridos mas eu preciso que ela seja do tipo double. Alguém sabe como resolver????
    • By Adriano Costa
      Fala galera!!!
      Eu sou novo na programação e estou precisando de uma ajuda, estou tentando fazer um for dentro dos scriplets mas esta dando erro. É a parte do read do meu crud. Quando eu aço o for através da camada controller ele funciona, mas na pagina jsp ele da um erro.
       
      <%@ page language="java" contentType="text/html; charset=utf-8"
          pageEncoding="utf-8"%>
      <%@page import="model.JavaBeans"%>
      <%@page import="java.util.ArrayList"%>  
      <%
          ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>)request.getAttribute("contatos");
          for (int i = 0; i < lista.size(); i++){
              out.print(lista.get(i).getIdlista());
          }
      %>
       
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>Lista de Tarefas</title>
      <link rel="stylesheet" href="css/styles.css">
      </head>
      <body>
          <div id= "login-container">
              <h1>Lista de Tarefas</h1>
              <table>
                  <thead>
                      <tr>
                          <th>Código</th>
                          <th>Titulo</th>
                          <th>Descrição</th>
                          <th>Data</th>
                          <th>Status</th>
                          <th>Prioridade</th>
                      </tr>
                  </thead>
                  <tbody>
                      
                  </tbody>
              </table>
              <form name="frmContato" action="listarTarefa">
                  
                  <input type="submit" value="Cadastrar" onclick="validar()">
              </form>
              
          </div>
          <script src="scripts/validador.js"></script>    
      </body>
      </html>
       
      E esse é o erro
       
      HTTP Status 500 – Internal Server Error
      Type Exception Report
      Message An exception occurred processing [/listaTarefas.jsp] at line [8]
      Description The server encountered an unexpected condition that prevented it from fulfilling the request.
      Exception
      org.apache.jasper.JasperException: An exception occurred processing [/listaTarefas.jsp] at line [8] 5: 6: <% 7: ArrayList<JavaBeans> lista = (ArrayList<JavaBeans>)request.getAttribute("contatos"); 8: for (int i = 0; i < lista.size(); i++){ 9: out.print(lista.get(i).getIdlista()); 10: } 11: %> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Root Cause
      java.lang.NullPointerException org.apache.jsp.listaTarefas_jsp._jspService(listaTarefas_jsp.java:126) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326) javax.servlet.http.HttpServlet.service(HttpServlet.java:733) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) Note A pilha de erros completa da causa principal está disponível nos logs do servidor.
       
       
      esse é o Medoto
       
      // Listar tarefa
              protected void tarefas(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  //Criando um objeto que irá receber os dados do JavaBeans
                  ArrayList<JavaBeans> lista = dao.listarTarefa();
                  
                  request.setAttribute("tarefas", lista);
                  RequestDispatcher rd = request.getRequestDispatcher("listaTarefas.jsp");
                  rd.forward(request, response);
                  
                  //Teste de recebimento da lista
                  for(int i = 0; i<lista.size(); i++) {
                      System.out.println(lista.get(i).getIdcon());
                      System.out.println(lista.get(i).getTitulo());
                      System.out.println(lista.get(i).getDescricao());
                      System.out.println(lista.get(i).getData());
                      System.out.println(lista.get(i).getStatus());
                      System.out.println(lista.get(i).getPrioridade());
                  }
              }
          
×

Important Information

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