Classe para cadastrar não funciona

7 respostas
GHenrique

Pessoal tô fazendo um cadastro simples só pra pegar a “prática”, já consigo listar na tabela os dados que cadastrei na mão lá no banco, mas o meu cadastro não insere nada no banco…

public class Candidatos extends javax.swing.JFrame {

    /** Creates new form Candidato */
    public Candidatos() {
        initComponents();
    }
    
    private void cadastraCandidato(){
        if(verificarCampos()){                                                 
            CandidatoBean candidato = new CandidatoBean();
            candidato.setNome(tfNome.getText().trim());                        
            //FALTA IMPLEMENTAR O SET NUMTESTE
            //candidato.setNumteste(tfTeste.getIn().trim());
            //tentando converter para inteiro o campo antes de passar
            candidato.setNumteste(Integer.parseInt(tfTeste.getText().trim()));   
            //candidato.setNumteste(tfTeste.get().trim());                                               
           CandidatoControl c = new CandidatoControl(); 
           c.cadastrarCandidato(candidato);            
            desabilitarCampos();    
          // JOptionPane.showMessageDialog(null,"NÃO FOI POSSÍVEL CADASTRAR CANDIDATO!!", "ATENÇÃO!!",JOptionPane.ERROR_MESSAGE);
        }         
    }
    
    private boolean verificarCampos(){  
        if(tfNome.getText().trim().equals("")){
            return true;
        }
        return false;
    }    
    
    
    private void desabilitarCampos(){
        tfNome.setEditable(false);
        tfTeste.setEditable(false);                
    }              
                          

    private void btIncluirActionPerformed(java.awt.event.ActionEvent evt) {                                          
        cadastraCandidato();
        // TODO add your handling code here:
    }                                         

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Candidatos().setVisible(true);
            }
        });
    }

Quando eu clico em INCLUIR, ele não diz nada, não dá erro, mas também não inclui, sei que o erro está na minha lógica, mas ainda não consegui descobrir. Alguma luz!?!?!?

Abaixo o meu CONTROL:

public CandidatoControl() {
    }

    public void cadastrarCandidato(CandidatoBean candidato) {
            try{
                AcessoMysql  mysql = new AcessoMysql();
                pstm = (PreparedStatement) mysql.conectar() .prepareStatement(cadastraCandidato);                
                pstm.setString(1,candidato.getNome());
                pstm.setInt(2,candidato.getNumteste());
                pstm.executeUpdate();
                 mysql.desconectar();
                 
                //pstm.setDate(3,candidato.gt);                            
            }catch(Exception e){
                 e.printStackTrace();
            }
    
    }

7 Respostas

gabbardo

Chegou a debuggar para ver se o botão incluir realmente entra no método cadastrarCandidato e os dados estão sendo setados corretamente? Coloca um breakpoint na parte da classe Candidatos onde tu dá um “new CandidatoBean()” e seta o nome e o numteste para ver se está setando ok.
Se não está dando erro é possivel q nem esteja chamando nada para eventualmente gerar algum erro.

T

seu if de verificarCampos() deve estar retornando sempre falso;
quanto a tabela é importtante vc criar seu proprio AbstractTableModel.

http://www.guj.com.br/articles/147

GHenrique

galera, dei um debug mas não manjei muito, a console mostrou:

Ouvindo em javadebug
Executando programa do usuário
LineBreakpoint Candidatos.java : 33 enviado com êxito.
MethodBreakpoint [br.com.cadastracandidato.Candidatos].desabilitarCampos ‘()Lvoid;’ enviado com êxito.
Programa do usuário finalizado

o metodo verificaCampos, tbm alterei para

private boolean verificarCampos(){ if(tfNome.getText().trim().equals("")){ //return false; return false; } return false; }

mas ainda nada, de qualquer forma valeu!

gabbardo

Se tua verificação é para constatar se o campo tfNome está vazio, então o metodo deveria ficar assim:

private boolean verificarCampos(){    
        if(tfNome.getText().trim().equals("")) {
            return false;  
        }  
        return true;  
}

Pois se ele estiver vazio, ai tu retorna falso e o sistema não faz nada, senão retorna true e passa na validação entrando na parte do código q chama o método cadastrarCandidato.

GHenrique

gabbardo valeuuu demais cara funfou na hora!!.. Agora sem querer abusar, como eu faria pra ele limpar os campos depois de cadastrar!?

gabbardo

Simples e tu já fez isso com o desabilitaCampo.

Cria um novo método chamado limpaCampos onde tu seta vazio. Tipo assim:

private void limpaCampos(){  
        tfNome.setText("");  
        tfTeste.setText("");
    }

E chama esse método depois do desabilitaCampo.
Acho q vai funcionar assim.

GHenrique

Tá bacana!!!
valeu… Abraço!

Criado 4 de outubro de 2011
Ultima resposta 4 de out. de 2011
Respostas 7
Participantes 3