NullPointerException na hora de cadastrar ! [RESOLVIDO]

6 respostas
P

Olá estou tentando efetuar a persistencia no meu BD mas nao esta dando certo !!
Ai vai meus codigos !!

private void bCadastrarClienteActionPerformed(java.awt.event.ActionEvent evt) {                                                  
      //  ClienteDAO cliDAO = new ClienteDAO();
        try {
            cliDAO.setCpf(Integer.parseInt(tfCPF.getText()));
            cliDAO.setCidade(tfCliCidade.getText());
            cliDAO.setDataCadastro(ftfCliDataAbertura.getText());
            cliDAO.setDivida(0);
            cliDAO.setEmail(tfCliEmail.getText());
            cliDAO.setEndereco(tfCliEndereco.getText());
            cliDAO.setFone(ftfCliFone.getText());
            cliDAO.setLimiteConta(Double.parseDouble(ftfCliLimiteConta.getText()));
            cliDAO.setNome(tfCliNome.getText());
            cliDAO.setUF(cbCliUF.getSelectedItem().toString());
            
            cliDAO.inserir();
        } catch (Exception e) {
            //JOptionPane.showMessageDialog(null,e.printStackTrace());
            e.printStackTrace();
        }
    }

agora meu ClienteDAO:

public void inserir() {
        //PreparedStatement ps = null;
        try {           
            
            String sql="insert into clientes (idcliente, nome, endereco,fone, foto,limiteconta,divida,datacadastro,datanasc,cidade,uf,email) values (?,?,?,?,?,?,?,?,?,?,?)";
            
            ps = con.prepareStatement(sql);
            ps.setInt(1,getCpf());
            ps.setString(2,getNome());
            ps.setString(3,getEndereco());
            ps.setString(4,getFone());
            ps.setString(5,getFoto());
            ps.setDouble(6,getLimiteConta());
            ps.setDouble(7,getDivida());
            ps.setString(8,getDataCadastro());
            ps.setString(9,getDataNasc());
            ps.setString(10,getCidade());
            ps.setString(11,getUF());
            ps.setString(12,getUF());
            JOptionPane.showMessageDialog(null,"falta soh o execute");
            ps.executeUpdate();
             JOptionPane.showMessageDialog(null,"Cliente cadastrado com sucesso !!");
        } catch (SQLException e) {
           JOptionPane.showMessageDialog(null,"Erro ao cadastrar cliente !!");
        }
    }

por favor me ajudem !!
fica aparecendo excecao Nullpointer e nao entendo o pq !!

6 Respostas

S

olá, este null é dificil de localiza-lo, significa que vc esta acessando algum objeto que
ainda nao está instanciado/criado…
seguinte, para facilitar vc descobrir onde esta, coloque um pequeno debug em seu código.

Exemplo:

private void bCadastrarClienteActionPerformed(java.awt.event.ActionEvent evt) {

//  ClienteDAO cliDAO = new ClienteDAO();

try {
System.out.println("passei pelo click 1");
cliDAO.setCpf(Integer.parseInt(tfCPF.getText()));   
        cliDAO.setCidade(tfCliCidade.getText());   
        cliDAO.setDataCadastro(ftfCliDataAbertura.getText());
System.out.println("passei pelo click 2");
cliDAO.setDivida(0);   
        cliDAO.setEmail(tfCliEmail.getText());   
        cliDAO.setEndereco(tfCliEndereco.getText());   
        cliDAO.setFone(ftfCliFone.getText());
System.out.println("passei pelo click 3");
cliDAO.setLimiteConta(Double.parseDouble(ftfCliLimiteConta.getText()));   
        cliDAO.setNome(tfCliNome.getText());   
        cliDAO.setUF(cbCliUF.getSelectedItem().toString());   
           
        cliDAO.inserir();   
    } catch (Exception e) {   
        //JOptionPane.showMessageDialog(null,e.printStackTrace());   
        e.printStackTrace();   
    }   
}

com isso, será fácil você achar o momento que seu código “falha”

espero ter ajudado

Sandro Lemanski da Silva

Wolf_X
mano, qdo vc ia instanciar o objeto cliDAO , vc fez em forma de comentario:

// ClienteDAO cliDAO = new ClienteDAO();

assim como aqui

//PreparedStatement ps = null;

se vc ta rodando com eles assim , e nao instanciou eles la atras tira essa barra dupla q resolve.
Bravox
pepinho:
private void bCadastrarClienteActionPerformed(java.awt.event.ActionEvent evt) {                                                  
      //  ClienteDAO cliDAO = new ClienteDAO();

existe em outro lugar do seu código que cria ( instância ) um objeto ClienteDAO pq olhando no seu código ai a instanciação está comenta e concerteza isso irá gerá uma exceção do tipo NullPoniterException !

pepinho:
public void inserir() {
        //PreparedStatement ps = null;
     
    }

idem para esse

mas para ser mas exato aonde está disparando a exceção posta o stacktrace ai !!

Bravox

sandrogates:
olá, este null é dificil de localiza-lo, significa que vc esta acessando algum objeto que
ainda nao está instanciado/criado…

opá !! e mais simples do que vc imagina , e só olhar no stacktrace

pode ter certeza de que não é uma boa pratica , imagine se o seu código tiver varias linhas !

obs: só estou querendo ajudar e não criticar !!

P

Bom essa é a minha classe DAO completa:

import java.sql.*;
import java.io.*;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import javax.swing.*;
import java.util.Date;
import locadora.db.Conexao;
import locadora.vo.*;

public class ClienteDAO extends Cliente{
    
    private PreparedStatement ps;
    private Statement stm;
    private Connection con;
    
    public ClienteDAO() {
        Conexao.getCon();
        stm = Conexao.getStm();
    }
    
    public void inserir() {
        //PreparedStatement ps = null;
        try {           
            
            String sql="insert into clientes (idcliente, nome, endereco,fone, foto,limiteconta,divida,datacadastro,datanasc,cidade,uf,email) values (?,?,?,?,?,?,?,?,?,?,?)";
            
            ps = con.prepareStatement(sql);
            ps.setInt(1,getCpf());
            ps.setString(2,getNome());
            ps.setString(3,getEndereco());
            ps.setString(4,getFone());
            ps.setString(5,getFoto());
            ps.setDouble(6,getLimiteConta());
            ps.setDouble(7,getDivida());
            ps.setString(8,getDataCadastro());
            ps.setString(9,getDataNasc());
            ps.setString(10,getCidade());
            ps.setString(11,getUF());
            ps.setString(12,getUF());
            JOptionPane.showMessageDialog(null,"falta soh o execute");
            ps.executeUpdate();
             JOptionPane.showMessageDialog(null,"Cliente cadastrado com sucesso !!");
        } catch (SQLException e) {
           JOptionPane.showMessageDialog(null,"Erro ao cadastrar cliente !!");
        }
    }
    
    public void alterar() {
        PreparedStatement ps = null;
        try {
            ps=con.prepareStatement("update categoria set nome=?,endereco=?,fone=?,foto=?,"+
                    "limiteconta=?,datanasc=?,cidade=?,uf=?,email=?,divida=? where id=?");
            ps.setString(1,getNome());
            ps.setString(2,getEndereco());
            ps.setString(3,getFone());
            ps.setString(4,getFoto());
            ps.setDouble(5,getLimiteConta());
            ps.setString(6,getDataNasc());
            ps.setString(7,getCidade());
            ps.setString(8,getUF());
            ps.setString(9,getEmail());
            ps.setDouble(10,getDivida());
            ps.setInt(11,getCpf());
            ps.executeQuery();
            
            JOptionPane.showMessageDialog(null,"Cliente alterado com sucesso !!");
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null,"Erro ao alterar cliente !!");
        }
    }
    
    public void excluir() {
        //agenda nome da tabela
        String sqlQuery = "delete from cliente where id = " +
               getCpf()+ "; ";
        try {
            stm.executeUpdate(sqlQuery);
            JOptionPane.showMessageDialog(null, "Exclusão realizada com sucesso!");
        } catch (SQLException e) {
            JOptionPane.showMessageDialog(null, "Erro ao excluir registro !!! Exceção SQL...\n" +
                    e.getMessage());
        }
    }
    
    public Cliente consultarPorID(int id) {
        Cliente cli = new Cliente();
        PreparedStatement ps = null;
        try {
            ps=con.prepareStatement("select * from clientes where id=?");
            ps.setInt(1,id);
            ResultSet rs = ps.executeQuery();
            cli.setNome(rs.getString("NOME"));
            cli.setEndereco(rs.getString("ENDERECO"));
            cli.setFone(rs.getString("FONE"));
            cli.setFoto(rs.getString("FOTO"));
            cli.setCidade(rs.getString("CIDADE"));
            cli.setUF(rs.getString("UF"));
            cli.setEmail(rs.getString("EMAIL"));
            cli.setDivida(Double.parseDouble(rs.getString("DIVIDA")));
            cli.setDataCadastro(rs.getString("DATACADASTRO"));
            cli.setDataNasc(rs.getString("DATANASC"));
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Erro ao consultar Cliente !!");
        }
        
        return cli;
    }
    
    public Cliente consultarPorNome(String nome) {
        Cliente cli = new Cliente();
        PreparedStatement ps = null;
        try {
            ps=con.prepareStatement("select * from clientes where nome like %?%");
            ps.setString(1,nome);
            ResultSet rs = ps.executeQuery();
            cli.setNome(rs.getString("NOME"));
            cli.setEndereco(rs.getString("ENDERECO"));
            cli.setFone(rs.getString("FONE"));
            cli.setFoto(rs.getString("FOTO"));
            cli.setCidade(rs.getString("CIDADE"));
            cli.setUF(rs.getString("UF"));
            cli.setEmail(rs.getString("EMAIL"));
            cli.setDivida(Double.parseDouble(rs.getString("DIVIDA")));
            cli.setDataCadastro(rs.getString("DATACADASTRO"));
            cli.setDataNasc(rs.getString("DATANASC"));
            
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Erro ao consultar Cliente !!");
        }
        
        return cli;
    }
}

nao sei se devo acrescentar alguma coisa ou nao !!
estou muito confuso
as vezes com o statement normal funciona e qndo tento usar o prepared ja da pau !!

Esses sao os erros que aparecem na saida ali embaixo do NetBeans:
java.lang.NullPointerException
        at locadora.gui.jfCadastros.bCadastrarClienteActionPerformed(jfCadastros.java:651)
        at locadora.gui.jfCadastros.access$600(jfCadastros.java:23)
        at locadora.gui.jfCadastros$7.actionPerformed(jfCadastros.java:192)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener$Actions.actionPerformed(BasicButtonListener.java:287)
        at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
        at javax.swing.JComponent.processKeyBinding(JComponent.java:2844)
        at javax.swing.JComponent.processKeyBindings(JComponent.java:2879)
        at javax.swing.JComponent.processKeyEvent(JComponent.java:2807)
        at java.awt.Component.processEvent(Component.java:5815)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
        at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:693)
        at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:958)
        at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:830)
        at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:657)
        at java.awt.Component.dispatchEventImpl(Component.java:4282)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
P

Pessoal Ja sei oq era

public ClienteDAO() { this.con = Conexao.getCon(); }

eu tinha soh que colocar akele this e comecou a funcionar perfeitamente !!!

Criado 4 de outubro de 2007
Ultima resposta 5 de out. de 2007
Respostas 6
Participantes 4