Meu palpite vai para a variável connection! Indica aí para nós qual é a linha 27
ManoJava
Bom dia!!
Primeira coisa coloca um BreakPoint nessas linhas onde vc seta os valores, debuga e veja se algum desses parametros esta retornando null, veja se sua tabela aceita valores null, etc…
Att.
caio.ribeiro.pereira
o erro ta na linha 27, como vc nao colocou o código fonte completo, o meu palpite é na linha:
A ordem dos atributos sql começam apartir do 0 e não do 1, ai talvez o erro seja na no setDate pois nele vc cita o indice 4 que não existe pois deveria ser o número 3.
Enfim, é só um palpite e caso esteja errado, favor me corrigir
DZR
A sua variável connection não está vazia?
Poste, de preferência, o erro todo e o seu código todo, pois só essas linhas fica meio vago arranjar solução.
thiago.correa
caio.ribeiro.pereira:
o erro ta na linha 27, como vc nao colocou o código fonte completo, o meu palpite é na linha:
A ordem dos atributos sql começam apartir do 0 e não do 1, ai talvez o erro seja na no setDate pois nele vc cita o indice 4 que não existe pois deveria ser o número 3.
Enfim, é só um palpite e caso esteja errado, favor me corrigir :D
Tem mais esse erro, mas, não seria uma NPE, ACHO que seria uma SQLException
DZR
caio.ribeiro.pereira:
o erro ta na linha 27, como vc nao colocou o código fonte completo, o meu palpite é na linha:
A ordem dos atributos sql começam apartir do 0 e não do 1, ai talvez o erro seja na no setDate pois nele vc cita o indice 4 que não existe pois deveria ser o número 3.
Enfim, é só um palpite e caso esteja errado, favor me corrigir :D
Na verdade, o rapaz está certo, pois o PreparedStatement não começa do 0, e sim do 1.
O valor que consta não é como se fosse um vetor, e sim indicando a qual “?” o campo pertence.
O que eu posso suspeitar, sem ter o código do camarada:
O objeto de conexão está nulo.
Algumas das variáveis inseridas do Prepared Statement está NULL, e a tabela não aceita o campo null
Só tenho dois palpites…
AlanHoinacki
Nossa, a ajuda é rápida aqui hem…
O código completo da classe é:
packagejdbc.dao;importjava.sql.Connection;importjava.sql.Date;importjava.sql.PreparedStatement;importjava.sql.SQLException;importjdbc.Connection.ConnectionFactory;importjdbc.modelo.Tcc;publicclassTccDAO{privateConnectionconnection;publicvoidTccDao(){this.connection=ConnectionFactory.getConnection();}publicvoidadiciona(Tcctcc){// prepared statement para inserçãoStringsql="insert into contatos (autor,titulo,orientador,data) values (?,?,?,?)";try{// prepared statement para inserçãoPreparedStatementstmt=connection.prepareStatement(sql);// seta os valoresstmt.setString(1,tcc.getNome());stmt.setString(2,tcc.getTitulo());stmt.setString(3,tcc.getOrientador());stmt.setDate(4,newDate(tcc.getData().getTimeInMillis()));// executastmt.execute();stmt.close();}catch(SQLExceptione){thrownewRuntimeException(e);}}}
Vlw!
DZR
E o erro? Poste tb.
Coloque seu código entre as tags [“CODE”] e ["/CODE"] (retire as aspas), para melhor visualização no fórum.
Vlw.
AlanHoinacki
Acho que DZR está correto. Realmente havia problema com a variável “connection”.
Esta estava assim: this.connection = ConnectionFactory.getConnection();
e deveria ser assim: this.connection = new ConnectionFactory().getConnection();
Bem, aqui está mostrando que o seu construtor não iniciou a variável connection.
Como não conheço todo o seu projeto, estou supondo que o jdbc é um pacote no seu projeto, e que o mesmo está acessível, ou seja, ele é public static.
Se o jdbc não for um pacote, sugiro criar uma classe estática para o ConnectionFactory.
Retire o atributo private do Connection (sei que não fará diferença alguma, mas comigo funcionou sem o private. Às vezes o peso do erro atrapalha)…
Retire o this.connection = ConnectionFactory.getConnection() e coloque-o antes da linha 26 (no caso, antes da linha PreparedStatement stmt = connection.prepareStatement(sql); ).
Se puder, debugue o projeto e veja se a variável connectio está sendo preenchida, pois pode estar com problema no ConnectionFactory, impedindo do drive JDBC conectar om o banco de dados. Aí, retorna um objeto vazio.
thiago.correa
at jdbc.dao.TccDAO.adiciona(TccDAO.java:26)
Cara o que interessa é essa classe na linha 26, é aí que tá ocorrendo o erro!
lucasportela
Os parametros do PreparedStatement começam a contagem com 1 até onde eu sei…
Olhando seu código aqui com mais detalhes, o que o lucasportela falou no post acima tem sentido e es. Construtores não tem o parametro VOID, ou seja, você nunca está chamando o seu construtor. Consequentemente, a sua variável Connectoin nunca sai do NULL.
Faça a modificação sugerida por ele.
Vlw lucas pela sua idéia! Nem percebi o void ali…
caio.ribeiro.pereira
AlanHoinacki posta o código inteiro dessa classe e entre as tags “ código-fonte ” para o pessoal aqui ajudar da melhor forma
não olhei o código completo com essa identação maluca que postou, mas não entendi o ‘void’, era pra ser um construtor?
public TccDao(){
this.connection = ConnectionFactory.getConnection();
}
faça como o nosso amigo neste post falou que funciona…
como vc fez o metodo VOID ele nao vai ser executado até que vc mande executar o metodo… e por isso a sua variavel connection esta nula… esta e a causa do nullPointer Exception
o certo seria ser um construtor para ele executar na construção da classe… acredito que isto funcione mesmo!!
AlanHoinacki
Oi Pessoal!!
Realmente a falha (feia) estava no método TccDao. Tornei-o construtor e o problema foi resolvido!
Agradeço a todos pela ajuda!
Obrigado!
DZR
BLZ!
Agora edite o seu primeiro tópico e coloque no título como [Resolvido].