Java.lang.NullPointerException

30 respostas
R

como gaço pra corrigir esse exception na minha consulta

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at sistemageral.Recibo.pesquisarRecibo(Recibo.java:338)

at sistemageral.Recibo.jBPesqActionPerformed(Recibo.java:313)

at sistemageral.Recibo.access$100(Recibo.java:21)

at sistemageral.Recibo$2.actionPerformed(Recibo.java:164)

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)

30 Respostas

yoshikichi

rodrigo.menezes:
como gaço pra corrigir esse exception na minha consulta

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at sistemageral.Recibo.pesquisarRecibo(Recibo.java:338)

at sistemageral.Recibo.jBPesqActionPerformed(Recibo.java:313)

at sistemageral.Recibo.access$100(Recibo.java:21)

at sistemageral.Recibo$2.actionPerformed(Recibo.java:164)

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)

</blockquote>

NullPointerException é atributo sem referencia, ou seja null.

posta seu codigo ai.
rodrigo.bossini

Seu código deve ter algum objeto não inicializado tentando chamar algum método, ou recebendo alguma atribuição.

R

esse é o que ta dando erro

public void pesquisarRecibo(){

String usuario = select * from paciente;

try {

int num=0;

num= Integer.parseInt(jtRegistro.getText());

TesteConexao pesquisar= new TesteConexao();

String sql="";
sql ="select * from paciente Where codigo =num{codigo}" ;
        pesquisar.setResultSet(sql);
        if(pesquisar.resultSet.next()){
            //atualizarRecibo();
            JOptionPane.showMessageDialog(null," encontrado");
            jtResp.requestFocus();
        }
        else{
            JOptionPane.showMessageDialog(null,"Código não encontrado");
            jtRegistro.requestFocus();
            pesquisar.setResultSet(usuario);
        }
    } 
    catch (SQLException erro){
        JOptionPane.showMessageDialog(null,"Erro na Pesquisa");
    }
}

e aki é o de conexao

import java.sql.;
import javax.swing.
;

public class TesteConexao {

public static Connection connection=null;
public static Statement statement=null;
public static ResultSet resultSet=null;


public  static boolean getConexao(){
     try{
        
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       
        connection = DriverManager.getConnection("jdbc:odbc:Banco");
        statement  = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        JOptionPane.showMessageDialog(null,"Conexão realizada com sucesso");
        return true;
    }
    catch(ClassNotFoundException erro){
        JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado!");
        
        return false;
        }
    catch(SQLException erro){
        JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");
        
        return false;
    }
}
public static void close(){
    closeResultSet();
    closeStatement();
    closeConexao();
    
}
private static void closeConexao(){
    try{
        connection.close();
    }
    catch(SQLException erro){
        JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");
                
    }
}
private static void closeStatement(){
    try{
        statement.close();
    }
    catch(SQLException erro){
        JOptionPane.showMessageDialog(null,"ERRO no closeStatement");
                 
    }
}
private static void closeResultSet(){
    try{
        resultSet.close();
    }
    catch(SQLException erro){
        JOptionPane.showMessageDialog(null,"Erro no closeResultSet");
         erro.printStackTrace();        
    }
}
public static void setResultSet(String sql){
    
    try {
        
        resultSet = statement.executeQuery(sql);
     
    }
    catch(SQLException erro){
        JOptionPane.showMessageDialog(null,"Erro na Pesquisa (setResultSet)");
        
    }
    
}
public static int runSql(String sql){
    int quant=0;
    try{
        quant = statement.executeUpdate(sql);
    }
    catch(SQLException erro){
        JOptionPane.showMessageDialog(null,"Erro no script sql de atualização-VERIFIQUE SE TODOS OS CAMPOS FORAM PREENCHIDOS CORRETAMENTE");
    }
    return quant;
}

}

rodrigo.bossini

Que tipo de objeto é o jtResp ?
Você inicializou ele?

tem como postar o código com as tags code? :slight_smile:

R

me cadastrei hj como faço issso

rodrigo.bossini

Quando estiver respondendo a uma mensagem, tem uns botões acima do campo onde vc digita sua mensagem.

Clica em code, digite o codigo, e clica em code novamente.

Aqui fica seu código
R
// esse é o metodo que ta dando o erro

public void pesquisarRecibo(){
        String usuario = "select * from paciente";
        try {
            int num=0;
            num= Integer.parseInt(jtRegistro.getText()); 
            TesteConexao pesquisar= new TesteConexao();
            String sql="";
         
            sql ="select * from paciente Where codigo =num" ;
            pesquisar.setResultSet(sql);
            if(pesquisar.resultSet.next()){
                //atualizarRecibo();
                JOptionPane.showMessageDialog(null," encontrado");
                //jtResp.requestFocus();
            }
            else{
                JOptionPane.showMessageDialog(null,"Código não encontrado");
                jtRegistro.requestFocus();
                pesquisar.setResultSet(usuario);
            }
        } 
        catch (SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro na Pesquisa");
        }
    }
//e aqui é a classe de conexão
import java.sql.*;
import javax.swing.*;

public class TesteConexao   {
    
    public static Connection connection=null;
    public static Statement statement=null;
    public static ResultSet resultSet=null;
    
    
    public  static boolean getConexao(){
         try{
            
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           
            connection = DriverManager.getConnection("jdbc:odbc:Banco");
            statement  = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            JOptionPane.showMessageDialog(null,"Conexão realizada com sucesso");
            return true;
        }
        catch(ClassNotFoundException erro){
            JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado!");
            
            return false;
            }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");
            
            return false;
        }
    }
    public static void close(){
        closeResultSet();
        closeStatement();
        closeConexao();
        
    }
    private static void closeConexao(){
        try{
            connection.close();
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");
                    
        }
    }
    private static void closeStatement(){
        try{
            statement.close();
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"ERRO no closeStatement");
                     
        }
    }
    private static void closeResultSet(){
        try{
            resultSet.close();
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro no closeResultSet");
             erro.printStackTrace();        
        }
    }
    public static void setResultSet(String sql){
        
        try {
            
            resultSet = statement.executeQuery(sql);
         
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro na Pesquisa (setResultSet)");
            
        }
        
    }
    public static int runSql(String sql){
        int quant=0;
        try{
            quant = statement.executeUpdate(sql);
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro no script sql de atualização-VERIFIQUE SE TODOS OS CAMPOS FORAM PREENCHIDOS CORRETAMENTE");
        }
        return quant;
    }    
    
}
//assim
rodrigo.bossini

jtRegistro foi inicializado? Ou seja, tem alguma linha do código q tem a chamada new pra esse objeto?

R

jtRegistro é um TextField que ta amazenado o seu valor na variavel num

rodrigo.bossini

E o textfield ja foi inicializado?

Faz um catch (NullPointerException) pra todos os try’s, assim fica mais fácil achar onde tá a referencia nula.

kaique

Procure a classe Recibo.java, olhe o código da linha 33 e cole aqui. É nessa linha que está sendo propagado o erro.

[]'s.

R

deu erro no catch nullexception do metodo pesquisarRecibo será que é o valor que ta sendo passando no comando sql

R

kaique:
Procure a classe Recibo.java, olhe o código da linha 33 e cole aqui. É nessa linha que está sendo propagado o erro.

[]'s.

linha 33 é comentario ja definido do netbeans

kaique

rodrigo.menezes:
kaique:
Procure a classe Recibo.java, olhe o código da linha 33 e cole aqui. É nessa linha que está sendo propagado o erro.

[]'s.

linha 33 é comentario ja definido do netbeans

Foi mal. Não prestei atenção a figura que apareceu na sua primeira mensagem. A linha correta onde o erro está sendo propagado é a linha 338.
Cola ela aqui pra gente ver o que pdoe estar acontecendo…

[]'s.

R

kaique:
rodrigo.menezes:
kaique:
Procure a classe Recibo.java, olhe o código da linha 33 e cole aqui. É nessa linha que está sendo propagado o erro.

[]'s.

linha 33 é comentario ja definido do netbeans

Foi mal. Não prestei atenção a figura que apareceu na sua primeira mensagem. A linha correta onde o erro está sendo propagado é a linha 338.
Cola ela aqui pra gente ver o que pdoe estar acontecendo…

[]'s.

// tai apartir da 336

sql ="select * from paciente Where codigo ='num'" ; TesteConexao.setResultSet(sql); if(TesteConexao.resultSet.next()){ //atualizarRecibo(); JOptionPane.showMessageDialog(null," encontrado"); //jtResp.requestFocus(); } else{ JOptionPane.showMessageDialog(null,"Código não encontrado"); jtRegistro.requestFocus(); TesteConexao.setResultSet(usuario); } } catch (SQLException erro){ JOptionPane.showMessageDialog(null,"Erro na Pesquisa"); } catch(NullPointerException erro){ erro.printStackTrace(); JOptionPane.showMessageDialog(null,"Erro na Consulta"); }

rodrigo.bossini

agora que vc fez o catch (NullPointerException) ta aparecendo a mensagem de erro da JOptionPane q ta dentro deste catch?

R

ta sim no catch dentro do metodo Pesquisar recibo

rodrigo.bossini

Cara ainda to desconfiado do seu jtRegistro. Tem certeza que ja tem uma chamada new pra esse objeto?

R

jtRegistro = new javax.swing.JTextField();

linha 35 da classe

kaique

Tenta o seguinte:

  • Verificar se a variável resultSet da classe TesteConexao é nula. Se sim, dê um jeito de instanciar ela;
  • Essa variável resultSet é um java.sql.ResultSet? Se não, verifica posta aqui o código do método next() que o erro pode ser nele;

[]'s.

R
kaique:
Tenta o seguinte:

* Verificar se a variável resultSet da classe TesteConexao é nula. Se sim, dê um jeito de instanciar ela;
* Essa variável resultSet é um java.sql.ResultSet? Se não, verifica posta aqui o código do método next() que o erro pode ser nele;

[]'s.
import java.sql.*;
import javax.swing.*;

public class TesteConexao   {
    
    public static Connection connection=null;
    public static Statement statement=null;
    public static ResultSet resultSet=null;
    
    
    public  static boolean getConexao(){
         try{
            
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           
            connection = DriverManager.getConnection("jdbc:odbc:Banco");
            statement  = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
            JOptionPane.showMessageDialog(null,"Conexão realizada com sucesso");
            return true;
        }
        catch(ClassNotFoundException erro){
            JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado!");
            
            return false;
            }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");
            
            return false;
        }
    }
    public static void close(){
        closeResultSet();
        closeStatement();
        closeConexao();
        
    }
    private static void closeConexao(){
        try{
            connection.close();
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");
                    
        }
        catch(NullPointerException erro){
            erro.printStackTrace();
        }
    }
    private static void closeStatement(){
        try{
            statement.close();
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"ERRO no closeStatement");
                     
        }
        catch(NullPointerException erro){
            erro.printStackTrace();
        }
    }
    private static void closeResultSet(){
        try{
            resultSet.close();
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro no closeResultSet");
             erro.printStackTrace();        
        }
        catch(NullPointerException erro){
            erro.printStackTrace();
        }
    }
    public static void setResultSet(String sql){
        
        try {
            
            resultSet = statement.executeQuery(sql);
         
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro na Pesquisa (setResultSet)");
            
        }
        catch(NullPointerException erro){
            erro.printStackTrace();
        }
        
    }
    public static int runSql(String sql){
        int quant=0;
        try{
            quant = statement.executeUpdate(sql);
        }
        catch(SQLException erro){
            JOptionPane.showMessageDialog(null,"Erro no script sql de atualização-VERIFIQUE SE TODOS OS CAMPOS FORAM PREENCHIDOS CORRETAMENTE");
        }
        return quant;
    }    
    
}
rodrigo.bossini

OUtra coisa,

Acho que pra cada vez que você for fazer uma consulta ao banco e configurar o resultado no seu ResultSet vc precisa reinicializar o statement assim:

statement = conn.createStatement();

onde conn é o objeto Connection…

então no seu método setResultSet tenta adicionar essa linha.

R

rod.attack:
OUtra coisa,

Acho que pra cada vez que você for fazer uma consulta ao banco e configurar o resultado no seu ResultSet vc precisa reinicializar o statement assim:

statement = conn.createStatement();

onde conn é o objeto Connection…

então no seu método setResultSet tenta adicionar essa linha.

ja add e continua mesma coisa

rodrigo.bossini

No método pesquisarRecibo, tenta comentar a linha pesquisar.setResultSet(usuario); , só pra ter certeza que o erro tá aí.

R

a mesma coisa não sei mais o q fazer

kaique

rodrigo.menezes:
rod.attack:
OUtra coisa,

Acho que pra cada vez que você for fazer uma consulta ao banco e configurar o resultado no seu ResultSet vc precisa reinicializar o statement assim:

statement = conn.createStatement();

onde conn é o objeto Connection…

então no seu método setResultSet tenta adicionar essa linha.

ja add e continua mesma coisa

Onde você adicionou esse código que você está falando?
Pelo que eu dei uma olhada, o problema é a variável statement deve estar nula. Ela é instanciada no método getConexao(), e não encontrei chamada a esse método. Imprime o valor da variável statement no começo do método setResultSet() que a gente sabe se ela está nula ou não.

[]s.

R

kaique:
rodrigo.menezes:
rod.attack:
OUtra coisa,

Acho que pra cada vez que você for fazer uma consulta ao banco e configurar o resultado no seu ResultSet vc precisa reinicializar o statement assim:

statement = conn.createStatement();

onde conn é o objeto Connection…

então no seu método setResultSet tenta adicionar essa linha.

ja add e continua mesma coisa

Onde você adicionou esse código que você está falando?
Pelo que eu dei uma olhada, o problema é a variável statement deve estar nula. Ela é instanciada no método getConexao(), e não encontrei chamada a esse método. Imprime o valor da variável statement no começo do método setResultSet() que a gente sabe se ela está nula ou não.

[]s.

colocquei statement = connection.createStatement(); no metodo setResultSet e no metodo runSql e continua dando o memso ero

R

[/code]//essa é a minha classe de conexao feita a alteração
import java.sql.*;
import javax.swing.*;

public class TesteConexao {

public static Connection connection=null;
public static Statement statement=null;
public static ResultSet resultSet=null;


public static boolean getConexao(){
try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

connection = DriverManager.getConnection("jdbc:odbc:Banco");
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
JOptionPane.showMessageDialog(null,"Conexão realizada com sucesso");
return true;
}
catch(ClassNotFoundException erro){
JOptionPane.showMessageDialog(null,"Driver JDBC-ODBC não encontrado!");

return false;
}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");

return false;
}
}
public static void close(){
closeResultSet();
closeStatement();
closeConexao();

}
private static void closeConexao(){
try{
connection.close();
}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"Problemas na conexão com o banco de dados!");

}
catch(NullPointerException erro){
erro.printStackTrace();
}
}
private static void closeStatement(){
try{
statement.close();
}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"ERRO no closeStatement");

}
catch(NullPointerException erro){
erro.printStackTrace();
}
}
private static void closeResultSet(){
try{
resultSet.close();
}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"Erro no closeResultSet");
erro.printStackTrace();
}
catch(NullPointerException erro){
erro.printStackTrace();
}
}
public static void setResultSet(String sql){

try {
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
resultSet = statement.executeQuery(sql);

}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"Erro na Pesquisa (setResultSet)");

}
catch(NullPointerException erro){
erro.printStackTrace();
}

}
public static int runSql(String sql){
int quant=0;
try{
statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
quant = statement.executeUpdate(sql);
}
catch(SQLException erro){
JOptionPane.showMessageDialog(null,"Erro no script sql de atualização-VERIFIQUE SE TODOS OS CAMPOS FORAM PREENCHIDOS CORRETAMENTE");
}
return quant;
}[code]

R

Não sei mesmo mais o q fazer ja tentei de tudo se alguem souber por favor manda ai a resposta

kaique

Cara, não tem pra onde correr, a mensagem de erro está indicando que o erro está sendo disparado na classe Recibo, mais precisamente no método pesquisarRecibo, na linha 338.
Verifique o que acontece nesse trecho de código que o erro está lá…

[]'s.

Criado 30 de novembro de 2008
Ultima resposta 30 de nov. de 2008
Respostas 30
Participantes 4