在MS Access中的日期/时间字段中插入null

时间:2014-03-24 17:11:31

标签: java ms-access ms-access-2007

我一直在尝试将null值插入MS Access中的Date/Time列,但我一直收到此错误

以下是我如何设置空值的变体

String processedDate = ""; // doesn't work
String processedDate = null; // doesn't work

我在SQL插入期间得到的错误

java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression

我用Java编写的插入查询

INSERT INTO DonorDetails ([SIGNUP DATE],Remarks, [Date Processed])values ('25/03/2014','','')

当我知道值为null时,是否必须显式构造没有[Processed Date]列的SQL语句?或者有更简单的方法吗?

2 个答案:

答案 0 :(得分:2)

在SQL中,null值必须由关键字NULL表示。

INSERT INTO DonorDetails
([SIGNUP DATE], Remarks, [Date Processed])
VALUES (#2014/03/25#, NULL, NULL)
String processedDate = "NULL";

答案 1 :(得分:1)

目前还不清楚你是如何构建查询的,但一个好习惯是创建一个这样的预备语句:

PreparedStatement ps = connection.prepareStatement("INSERT INTO DonorDetails (signup_date, remarks, date_processed) values (?,?,?)");
ps.setTimestamp(1, someTimestamp);
ps.setString(2, someRemark);
ps.setNull(3, Types.TIMESTAMP);

这不太依赖于所使用的数据库和驱动程序,也解决了插入null等问题(参见最后一行)。

P.S。我不知道括号([])在插入中的含义,所以我猜对了列名