Estou criando um projeto no qual preciso enviar duas datas, o problema em si,está sendo sempre o retorno de um nullpointer exception, independente de qual meio tente tomar, seja trocando a classe para Calendar, ou Date, o resultado é sempre o mesmo. Segue o código:
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
Posa o stack trace do nullPointe, é importante saber onde acontece.
Também é importante vc saber que nullPointer ocorre quando vc tenta manipular algo NULO, logo, não importa o tipo da classe que vc coloque, NULO é NULO, vai dar nullPointer ao manipular e não há tipo de classe que resolva.
A solução é: ou vc trata, veficando previamente se é nulo ou evita que o objeto seja enviado nulo.
Neste caso provavelmente sua data está vindo nula, debuga, certifique-se antes que estás recebendo este valor.
Exception in thread "main" java.lang.NullPointerException
at com.solucao.iteris.dao.NotaFiscalDao.adiciona(NotaFiscalDao.java:30)
at teste.main(teste.java:26)
Eu consegui fazer esse tratamento porém da mesma maneira ele não retorna a data desejada, ou seja, o get está retornando um null para o bd.
public void adiciona(NotaFiscal notaFiscal) {
String sql = “INSERT INTO notafiscal (descricao, dataFaturamento, dataPagamento, status) values (?,?,?,?);”;
public void adiciona(NotaFiscal notaFiscal) {
// veja se isto esta funcionando corretamente
System.out.println(Date.valueOf((notaFiscal.getDataPagamento().format(formatador)));
}
Retornou esse exception:
Exception in thread “main” java.lang.IllegalArgumentException: Cannot format given Object as a Date
at java.text.DateFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at com.solucao.iteris.dao.NotaFiscalDao.adiciona(NotaFiscalDao.java:39)
at teste.main(teste.java:26)
wtf, se é Date pq vc está tentando converter pra Date?
Tua lógica tá zoada.
Vamos começar do inicio:
Aparentemente vc quer salvar as datas no banco, mas dá incompatibilidade com suas datas do tipo java.util.Date com o preparedStatement que recebe apenas sql.Date, ai vc quer fazer a conversão. certo? pra isso vc faz o seguinte:
Tendo em vista que DataPagamento seja do tipo util.Date, é só fazer o seguinte:
stmt.setDate(3, new java.sql.Date(notaFiscal.getDataPagamento().getTime()));