Null Point Excepction em comando SQL

Pessoa,

Segue, abaixo, uma classe Java -> QueryPessoa

package persistence;
import java.sql.*;

public class QueryPessoa {

private  int codigoPessoa;
private  String driver = "com.mysql.jdbc.Driver";
private  String url = "jdbc:mysql://127.0.0.1:3306/posgrad";
private  String username = "root";
private  String password = "ufpb"; 
private  Connection conn;

public QueryPessoa() {
	
	obtemConexao();
}

public Connection obtemConexao() {
    
    try { 
    
        Class.forName(driver);
        conn = DriverManager.getConnection(url,username,password );
        return conn;
       
    } catch (ClassNotFoundException cnfex) {
       
        System.err.println("Falha ao carregar o driver JDBC.");
        cnfex.printStackTrace();
        conn = null;
        return conn;
 
    }   catch (SQLException sqlex) {
       
       System.err.println( "Impossivel conectar" );
       sqlex.printStackTrace();
       conn = null;
       return conn;
       
   }
  
    
 }  

 public int consultaPessoa(String umaMatricula) {
	
	Connection conn = null;
	PreparedStatement stmt = null;
	ResultSet rs = null;
	int codigoPessoa;
	
	try{
		
		System.out.println("Matricula : " + umaMatricula);
		String sql = "SELECT A.ALU_PES_COD_PESSOA FROM ALUNOS A WHERE A.ALU_MATRICULA=?";
		System.out.println("SQL : " + sql);

/* linha 88 / stmt.setString(1,umaMatricula); / o erro está aqui */
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
rs.next();
codigoPessoa = rs.getInt(“ALU_PES_COD_PESSOA”);
System.out.println(codigoPessoa);
return codigoPessoa;
}
catch (Exception ex) {
System.out.println(ex.getMessage());
System.out.println(“Lancei exceção”);
ex.printStackTrace();
return 0;
}

}

}

E abaixo o código de uma classe TestaQueryPessoa

package beans;

import persistence.QueryPessoa;

public class TestaPessoa {

public static void main(String[] args) {
			
int umCodigo;
	
    QueryPessoa minhaPessoa = new QueryPessoa(); 
	
	umCodigo = minhaPessoa.consultaPessoa("308100011");
	
	if ( umCodigo != 0) {
		
		System.out.println("Codigo da Pessoa : " + umCodigo);					
	} 
	else {
		
		System.out.println("Aluno não encontrado");
	}
			
}

}


Quando tento executar o código acima, aparece a seguinte mensagem de erro :

java.lang.NullPointerException
at persistence.QueryPessoa.consultaPessoa(QueryPessoa.java:88)
at beans.TestaPessoa.main(TestaPessoa.java:25)

Será que alguém poderia me dar alguma idéia do que pode estar acontecendo ?
Os comentários da linha 88 foram apenas para apontar onde a IDE ECLIPSE está apontando o erro.

Agradece,

Max

Você mesmo inicializou seu objeto PreparedStatement com null (PreparedStatement stmt = null; )e depois tentou chamar um método(stmt.setString) nesse objeto???
:shock:

Ainda não acho que seja este o problema.
O fato de eu ter inicializado o objeto stmt da classe Prepared Statement com NULL denota uma programação robusta, onde devemos manter nosso objetos em um ESTADO INICIAL CONSISTENTE.

Não deveria ser esta a causa do erro. Deve haver alguma outra coisa que está causando a exceção supracitada e eu ainda não consegui descobrir.
[]'s
Max

[quote=maxcarvalho]Ainda não acho que seja este o problema.
O fato de eu ter inicializado o objeto stmt da classe Prepared Statement com NULL denota uma programação robusta, onde devemos manter nosso objetos em um ESTADO INICIAL CONSISTENTE.

Não deveria ser esta a causa do erro. Deve haver alguma outra coisa que está causando a exceção supracitada e eu ainda não consegui descobrir.
[]'s
Max[/quote]

lol

De facto o problema não foi ter inicializado a null, foi mesmo tentar aceder a ele estando ainda a null.

maxcarvalho use sempre [ code ] [ /code ] (sem espaços entre os colchetes) para delimitar as linhas de codigo

abrasssssssss

tente assim:

stmt = conn.prepareStatement(sql); stmt.setString(1,umaMatricula);
abraço.

[quote=maxcarvalho]Ainda não acho que seja este o problema.
O fato de eu ter inicializado o objeto stmt da classe Prepared Statement com NULL denota uma programação robusta, onde devemos manter nosso objetos em um ESTADO INICIAL CONSISTENTE.

Não deveria ser esta a causa do erro. Deve haver alguma outra coisa que está causando a exceção supracitada e eu ainda não consegui descobrir.
[]'s
Max[/quote]

Tem gente que quer aprender as coisas na marra mesmo. Sem estudo não dá, não adianta.

Coloquei o código conforme exposto acima :

    1. stmt = conn.prepareStatement(sql);   
    2. stmt.setString(1,umaMatricula);  
Mas o erro ainda persiste. A conexão chega a ser instanciada, o valor do atributo que armazena a referência à conexão é exibido em um JOptionPane, a string da consulta é exibida

através de system.out.println(sql) e logo após isto acontece é capturada e exeção “NullPointerExcecption”.
Segue, abaixo, o que aparece no “Console” do Eclipse quando a ocorre a exeção :
java.lang.NullPointerException at persistence.QueryPessoa.consultaPessoa(QueryPessoa.java:88) at beans.TestaPessoa.main(TestaPessoa.java:25) Matricula : 308100011 SQL : SELECT A.ALU_PES_COD_PESSOA FROM ALUNOS A WHERE A.ALU_MATRICULA=? null Lancei exceção Aluno não encontrado

Por acaso esta havendo algum problema com a consulta SQL ?
Agradece, 

Max W. V. Carvalho

Se fosse um erro na consulta daria um SQLException.

Me parece mais que o compilador não detectou que a classe foi alterada, e não a compilou novamente. Recomendo remover os .class limpando o projeto e mandar compilar novamente.

Faça o teste pra ver se não é o objeto ResultSet que está nulo.
Pode ser que a sua query não tenha obtido nenhum dado do banco.

Fala max, acho que o trecho que segue resolverá o problema:
Substitua:

stmt.setString(1,umaMatricula); stmt = conn.prepareStatement(sql);

Por:

conn = obtemConexao();
stmt = conn.prepareStatement(sql);     
stmt.setString(1,umaMatricula);    

No construtor da classe vc chama o obtemConexao(), porem o objeto Connection de retorno não é armazenado por nenhuma variavel.
Caso vc opte pela solução acima, retira a chamada do construtor. Ou então voce pode criar uma variavel de classe Connection conn e no construtor, esta variavel recebe o retorno do obtemConexao(), mas se fizer esta correção, nao esqueça de retirar a declaração
Connection conn = null; do metodo consultaPessoa(…)

Cara, acho que seu problema esta na variavel conn do metodo consultaPessoa(), pois na classe também ja existe uma varialve com mesmo nome, certifique-se que vc esta usando variavel da classe e não do metodo, ja que vc só esta inicializando a variavel da classe e a do metodo vc esta inicializando com null.