Erro : "AWT-EventQueue-0" java.lang.NullPointerException

8 respostas
E

Bom dia galera, estou com um problema no meu sisteminha, o seguinte erro ocorre quando eu mando gravar alguns dados no banco, tenho alguns botoes, jlabel, jtextfield, e quando mando salavar dá o seguinte erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at Tela.TelaCliente.jButton_SalvarActionPerformed(TelaCliente.java:353)
        at Tela.TelaCliente.access$200(TelaCliente.java:19)
        at Tela.TelaCliente$3.actionPerformed(TelaCliente.java:213)
        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.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        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)

esta aqui é o evento do botão, q quando disparado resulta no erro

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

               //código para Gravar os dados no Banco de Dados
      
        try
        {
            //insert int cliente (nome,uf) values ('Carazinho','RS')
            
            String sqlinsert ="insert into cliente " +
                    "(CLI_NOME,CLI_ENDERECO,CLI_BAIRRO, CLI_CIDADE,CLI_UF," +
                    "CLI_FONE,CLI_CEL,CLI_CPF) values ('" +
                    jTextField_Nome.getText()+"','"+                    
                    jTextField_Endereco.getText()+"','"+
                    jTextField_Bairro.getText()+"','"+
                    jTextField_Cidade.getText()+"','"+
                    jTextField_UF.getText()+"','"+
                    jTextField_Telefone.getText()+"','"+
                    jTextField_Celular.getText()+"','"+
                    jTextField_CPF.getText()+"')";
             
                  //  JOptionPane.showMessageDialog(null,"sql = "+sqlinsert);
                    DAOCliente.stmt.executeUpdate(sqlinsert);
                            
                   // JOptionPane.showMessageDialog(null,"Gravação realizado com sucesso!");
            
        }
catch (SQLException erro)
{
    JOptionPane.showMessageDialog(null,"Erro a tentar Gravar o registro..."+erro);
}
    }

Alguem sabe me dizer o q pode ser ???

8 Respostas

fiaux

Siga a dica do stacktrace, verifique a linha mencionada em sua classe

at Tela.TelaCliente.jButton_SalvarActionPerformed(TelaCliente.java:353)
.
Experimente usar o modo de debug.

FBovo

O NullPointer geralmente ocorre quando ele não está reconhecendo alguma variável (foi referenciada mas não foi criada, ou então está com nome diferente). E pelo visto no código, o erro está na TelaCliente.

E

desculpem, sou iniciante…nao sei usar o debug…alguem poderia me dar uma dica…no delphi eu usava clickar na linha q começa a execução e ela ficava negritada em vermelho, ai quando eu executava e chegava na linha ele parava e eu iria verificando atravez do F8…

Agradeço desde já…

Eduardo Quinhone

fiaux

Esqueça o debug por enquanto, verifique a TelaCliente.java na linha 353. O null pointer ocorreu lá. Nessa linha deve ter algo do tipo variavel.metodo(), sendo que a variável é nula, não referencia nenhum objeto.

E

descobri onde esta o erro, porem nao sei como resolver, o erro ocorre quando executa os comandos do banco de dados....

pessoal essa é minha classe DAOCLiente, onde eu guardo tudo referente ao cliente em questão de conexao

package DAO;

import ValoresObjetos.Cliente;
import Interfaces.IBancoDados;
import Principal.BancoDados;
import ValoresObjetos.Cliente;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


public class DAOCliente {
    
    private String driver;
    private String url;
    private String usuario;
    private String senha;

    private Connection con;
    private Statement stmt;
    private String conDriver, urlString, qry, mensagem;
    private ResultSet resultset;
  
    IBancoDados bancoDados;// = new BancoDados();;

    private BancoDados conexao;    

    public DAOCliente() {
           this.driver = IBancoDados.driver;
           this.url = IBancoDados.url;
           this.usuario = IBancoDados.usuario;
           this.senha = IBancoDados.senha;        
    }
    
    public void conectarBD( ) throws Exception{
        conexao = BancoDados.getInstancia();
        conexao.conectar();
    }
    public void desconectarBD( ) throws Exception{
        conexao.desconectar();
    }
    
    public void executeSQL(String sql){
            try{
                stmt = con.createStatement();
                //ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                resultset = stmt.executeQuery(sql);                
                //JOptionPane.showMessageDialog(null,"SQL executada com sucesso");
                
            }
            catch(SQLException sqlex){
               JOptionPane.showMessageDialog(null,"Não foi possível "+
                       "executar o comando sql,"+sqlex+", o sql passado foi "+sql);
            }
       }
    
    public ArrayList<Cliente>  getTodosClientes(){
        
        ArrayList<Cliente> listaCliente = new ArrayList<Cliente>();
        
         try{
            
             PreparedStatement comando = conexao.getConexao().prepareStatement("SELECT * FROM CLIENTE ORDER BY CLI_NOME");
             ResultSet rs = comando.executeQuery();

            while (rs.next()){
                
                Cliente c = new Cliente();
                
                c.setIdCliente(rs.getInt("CLI_ID"));                
                c.setNome(rs.getString("CLI_NOME"));
                c.setEndereco(rs.getString("CLI_ENDERECO"));
                c.setBairro(rs.getString("CLI_BAIRRO"));
                c.setCidade(rs.getString("CLI_CIDADE"));
                c.setUF(rs.getString("CLI_UF"));
                c.setTelefone(rs.getString("CLI_FONE"));
                c.setCelular(rs.getString("CLI_CEL"));
                c.setCPF(rs.getInt("CLI_CPF"));
                listaCliente.add(c);
            }  
        } catch (Exception ex) {
            System.err.println("Erro inesperado \n\n"+ex.toString( ));
        }
        return listaCliente;
    }
}

esse aqui é minha classe TelaCliente, onde fica os jlabels, jtextfields... mais precisamente no evento onclick do botão salvar....

private void jButton_SalvarActionPerformed(java.awt.event.ActionEvent evt) {                                               
            
            String sqlinsert ="insert into cliente " +
                    "(CLI_NOME,CLI_ENDERECO,CLI_BAIRRO, CLI_CIDADE,CLI_UF," +
                    "CLI_FONE,CLI_CEL,CLI_CPF) values ('" +
                    jTextField_Nome.getText()+"','"+                    
                    jTextField_Endereco.getText()+"','"+
                    jTextField_Bairro.getText()+"','"+
                    jTextField_Cidade.getText()+"','"+
                    jTextField_UF.getText()+"','"+
                    jTextField_Telefone.getText()+"','"+
                    jTextField_Celular.getText()+"','"+
                    jTextField_CPF.getText()+"')";
             
                 
                    DAOCliente.executeSQL(sqlinsert);
                 
      
    }

o erro q da referencia a linha 55 da classe DAOCLiente NO Metodo ExecutaSql q é quando faz a execução no banco....

nao consigo descobrir pq esta dando erro nesse comando....

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at DAO.DAOCliente.executeSQL(DAOCliente.java:55)
        at Tela.TelaCliente.jButton_SalvarActionPerformed(TelaCliente.java:350)
        at Tela.TelaCliente.access$200(TelaCliente.java:19)
        at Tela.TelaCliente$3.actionPerformed(TelaCliente.java:214)
        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.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6041)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5806)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4413)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2440)
        at java.awt.Component.dispatchEvent(Component.java:4243)
        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)
fiaux

Mesma situação na linha 55 de DAOCliente. A variável con não foi inicializada.

E

a variavel conn é do tipo Connecton, como posso incializar ela ???

E

fiaux , poderia me ajudar… nao entendo o q pode estar ocorrendo, sobre a inicialização da variavel, como proceder nesse caso ?

Criado 14 de abril de 2008
Ultima resposta 14 de abr. de 2008
Respostas 8
Participantes 3