正确的方法在准备好的语句中处理oracle日期数据类型的空值



i有一个具有20列以上的数据库,其中一些是带有null值的date/timestamp数据类型。

Java应用程序将从该表中读取数据并插入其他表。准备好的语句用于插入查询。在插入记录时,我会在日期列上" null指针异常" 在null的任何地方。对于Varchar,当实际值为null时,它会自动设置为null。有什么方法可以自动处理带有零值的日期字段,例如准备语句中的varchar

PreparedStatement ps = null;
....
....
ps.setDate(3, new java.sql.Date(date.getTime())); //date is Java.Util.Date

获取错误。所以我手动处理以下

if(date!= null)
    ps.setDate(3, new java.sql.Date(date.getTime()));
else
    ps.setNull(3, Types.DATE);

当然,您正在尝试在date上调用getTime,这可能是null

Java应用程序将从该表中读取数据并插入其他表。

如果这是真的,那么我希望 date to java.sql.Date(或null(,您可以直接使用它:

ps.setDate(3, date);

如果date确实不是java.sql.Date,则可以使用条件操作员:

ps.setDate(3, date == null ? null : new java.sql.Date(date.getTime()));

可以将null传递到setDate(出于相同的原因,它在setString中起作用(。当您与列一起使用的Java类型是原始类型(例如int(时,您只需要setNull。由于您无法使用null拨打CC_19的setInt,因此您将在这种情况下使用setNull。不过,这不是setDate的问题。

相关内容

  • 没有找到相关文章

最新更新