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.
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.
[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.
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.
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.