dinows
#1
Como posso passar valor null para um campo date em uma tabela do firebird ?
Estou usando :
stmt.setNull(1, java.sql.Types.DATE)
Entretanto ocorre a seguinte mensagem de erro:
Exception occurred during event dispatching:
java.lang.NullPointerException
Obrigado.
pierre
#2
Uma possível solução:
Veja se na tabela do seu DB, essa propriedade está “not null”, se estiver desmarque para aceitar valor nulo.
Falow
dinows
#3
A propriedade não está marcada. (aceitando valores null). Uso o IBExpert para inserir dados e os valores null nestes
campos são aceitos.
Estou inserindo parte do código (Onde ocorre o erro).
try{
String inserir = "INSERT INTO MINHA_TBL(DATA01 ,DATA02 , ...) VALUES (?,?, ...)";
PreparedStatement stmt = conApJava.prepareStatement(inserir);
if (jData01DateChooser.getDate().equals(null))
{ stmt.setNull(1, java.sql.Types.DATE); }
else
{ stmt.setTimestamp(1, new Timestamp (jData01DateChooser.getDate().getTime())); }
if (jData02DateChooser.getDate().equals(null))
{ stmt.setNull(2, java.sql.Types.DATE); }
else
{ stmt.setTimestamp(2, new Timestamp (jDataInicDateChooser.getDate().getTime())); }
...
...
...
stmt.executeUpdate();
...
...
conApJava.commit();
}catch (SQLException erro){
System.out.println(erro);
...
...
conApJava.rollback();
}
Obs: Estou usando o JCalendar para inserir as datas. Ele não aceita valores null. Por isso coloquei os if.
Use assim
try{
String inserir = “INSERT INTO MINHA_TBL(DATA01 ,DATA02 , …) VALUES (?,?, …)”;
PreparedStatement stmt = conApJava.prepareStatement(inserir);
if (jData01DateChooser == null || jData01DateChooser.getDate() == null)
{ stmt.setNull(1, java.sql.Types.DATE); }
else
{ stmt.setTimestamp(1, new Timestamp (jData01DateChooser.getDate().getTime())); }
if (jData02DateChooser.getDate() == null)
{ stmt.setNull(2, java.sql.Types.DATE); }
else
{ stmt.setTimestamp(2, new Timestamp (jDataInicDateChooser.getDate().getTime())); }
…
…
…
stmt.executeUpdate();
…
…
conApJava.commit();
}catch (SQLException erro){
System.out.println(erro);
…
…
conApJava.rollback();
}