Pessoal estou utilizando Linux (Fedora) e como IDE o NetBeans juntamente com MySQL como banco de dados… quando vou tentar executar uma inclusão básica ele me retorna o seguinte erro…
Exception in thread "main" java.lang.NullPointerException
at negocio.Instituicao.gravar(Instituicao.java:197)
at negocio.testa.main(testa.java:44)
O que posso fazer para resolver esse erro??
Muito Obrigado
Aki está o código de minha classe de conexao com o banco
packagenegocio;importjava.sql.*;publicclassBDConexao{privatestaticConnectioncon;privatestaticStatementstmt;privatestaticResultSetresultado;privatestaticbooleanstatus=false;/** Creates a new instance of BDConexao */publicBDConexao(){inicializarConexaoBD();}publicstaticvoidinicializarConexaoBD(){status=true;try{Class.forName("org.gjt.mm.mysql.Driver");}catch(ClassNotFoundExceptioncn){status=false;}try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/projexsol","root","");stmt=con.createStatement();}catch(SQLExceptionse){status=false;}}publicstaticStatementgetStatement(){returnstmt;}publicstaticbooleangetStatus(){returnstatus;}publicstaticintobterUltimoCodigoGeradoTabela(StringnomeTabela){try{StringcsCodigoGerado="SELECT LAST_INSERT_ID() from "+nomeTabela;resultado=stmt.executeQuery(csCodigoGerado);resultado.first();return(resultado.getInt(0));}catch(SQLExceptionse){return0;}}}
Não estou conseguindo entender o pq está dando erro…
oazuc
Alisson,
procure analisar exatamente o que está sendo passado para as linhas que retornaram o erro das classes Instituicao e testa.
Você está utilizando null de alguma maneira inválida.
O problema não é exatamente na classe de conexão com o banco.
Abraços.
_fs
O problema pode ser o resultset vazio. Tenta checar o conteudo dele antes de fazer qualquer outra manipulação com o mesmo.
cv1
<voz de mae chata>
Alisson, PELO AMOR DE DEUS, menino, tire esses statics dai! E nao ignore Exceptions! E para de concatenar strings pra montar SQL!
</voz de mae chata>
Como melhorar o codigo, de acordo com a mae chata:
Orientacao a Objetos tah aih pra ser usada. Nao faz sentido ter uma classe toda cheia de statics - ou vc voltou ao C?
Use a clausula throws quando vc nao tem como tratar uma excecao de um jeito que mantenha a sua aplicacao num estado consistente (nesse caso, usar uma flag boolean pra indicar erro foi uma pessima ideia: como vc sabe qual foi o erro?!)
De uma olhada no JavaDoc da classe PreparedStatement. Usando ela, vc nao precisa concatenar Strings pra montar queries, o que quase sempre leva a problemas de seguranca nas aplicacoes.
Acho que eh isso
Rafael_Steil
Lembrando que tem tutorial sobre quase tudo isso que o cv falou aqui no GUJ.