我一直在尝试将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语句?或者有更简单的方法吗?
答案 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。我不知道括号([]
)在插入中的含义,所以我猜对了列名