NullPointerException na hora de cadastrar ! [RESOLVIDO]

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

[code]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();
    }
}       [/code]

agora meu ClienteDAO:

[code]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 !!");
    }
}[/code]

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

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

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.

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 !

idem para esse

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

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

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 !!

Bom essa é a minha classe DAO completa:

[code]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;
}

}[/code]

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)

Pessoal Ja sei oq era

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

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