estou com um problema, eu tenho um dao onde eu cadastro datas no banco mysql, eu tenho um jsp onde eu tenho 4 datas, porem tera hora que eu só digitarei 1 data, ou 2 datas, as vezes as 4, mas tenho q ter o campo para cadastrar as 4 datas, quando eu digito somente uma data, da null point, pq eu tenho q digitar todas as datas, pq sera? para cadastrar a data no banco eu tenho q colocar:
stmt.setDate(1, new Date(dados.getServicos.getdata.gettimeimmillis… se estiver errado é pq digitei de cabeca.
NullPointerException sempre será lançada quando você invocar um método de um objeto que não foi instanciado.
Isso significa que, ao criar o java.sql.Date(long ms); e o valor for nulo, ele apresentará erro.
Falando em termos de lógica de programação, toda vez que uma variável pode variar entre null e algum valor, é coerente e interessante colocar uma estrutura condicional (if) para tratar e evitar erros.
Como você pode pegar de nenhuma às 4 datas, seria bom colocar os valores de cada campo em uma variável, verificar se é null e então tratar adequadamente…
Sem falar que, está usando DAO, mas pega o valor diretamente, misturando camadas de persistência e apresentação, não é?
luxu
se vc está sendo “obrigado” a digitar as datas quer dizer q no seu banco o campo está setado como not null, se for essa a dúvida está sanada!
M
mouzer
luxu, obrigado pela resposta,
mas o erro nao é esse, nao esta setado como not null no banco, o erro que da e null point, no java…
M
mouzer
drsmachado
irei tentar sua dica, pode sim dar certo, nao tinha pensado nisso, jaja posto se consegui ou nao.
abraco
M
mouzer
cara, fiz mais ou menos oq eu entendi sobre as dicas. agora o erro é outro…
segue oq eu fiz e o erro:
stmt=connection.prepareStatement("insert into servicos values(null,?,?,?,?,?,?,?)");stmt.setString(1,dados.getServicos().getNome());stmt.setInt(2,dados.getFrentes().getId());if(dados.getServicos().getDataIclasse()!=null){
stmt.setDate(3,newDate(dados.getServicos().getDataIclasse().getTimeInMillis()));}elseif(dados.getServicos().getDataFclasse()!=null){
stmt.setDate(4,newDate(dados.getServicos().getDataFclasse().getTimeInMillis()));}elseif(dados.getServicos().getDataIpidf()!=null){
stmt.setDate(5,newDate(dados.getServicos().getDataIpidf().getTimeInMillis()));}elseif(dados.getServicos().getDataFpidf()!=null){
stmt.setDate(6,newDate(dados.getServicos().getDataFpidf().getTimeInMillis()));}
stmt.setString(7,"N/A");stmt.execute();stmt.clearParameters();
se as datas vierem NULAS qual a sua idéia? setar null, se for pra cada if terá q ter um else q vai passar nulo, saka?
M
mouzer
po cara… tentei modificar pelo q entendi q vc falou mas continua o mesmo erro acima…
parameter 3… nao sei se fiz direito pq sou iniciante… segue a modificacao, o erro continua exatamente o mesmo.
Pessoal, procurem utilizar as tags code para formatar o código.
Acredito que a solução dada pelo remofourlanetto seja suficiente para sanar os eu problema.
mouzer, o erro indica que algum parâmetro (no caso o 3) não foi setado no PreparedStatement, por isso gera a exceção. É obrigatório que todos os parâmetros esteja setados antes de executar a query. Se não queres enviar um parâmetro nulo para a database ou usar ele na sua query, deves montar a query de acordo com o valores que recebe.