Android 如何在SQLite中更新空日期字段
在SQLite表中,我有两个字段END_DATE和START_DATE。首次运行结束时,日期为空且为空。在第二次运行时,我想用当前时间更新END_DATE为null的上一条记录,并创建新记录,但返回错误:Android 如何在SQLite中更新空日期字段,android,sqlite,Android,Sqlite,在SQLite表中,我有两个字段END_DATE和START_DATE。首次运行结束时,日期为空且为空。在第二次运行时,我想用当前时间更新END_DATE为null的上一条记录,并创建新记录,但返回错误: try { updateBuilder.where().eq("END_DATE", null); updateBuilder.updateColumnValue("END_DATE", currentTime);
try {
updateBuilder.where().eq("END_DATE", null);
updateBuilder.updateColumnValue("END_DATE", currentTime);
updateBuilder.update();
} catch (SQLException e) {
e.printStackTrace();
}
appUsageLog.setStartDate(currentTime);
appUsageLog.setPackageName(topPackageName);
appUsageLog.setEndDate(null);
appUsageLog.setUser(member);
try {
appUsageDao.create(appUsageLog);
} catch (SQLException e) {
e.printStackTrace();
}
错误:
java.sql.SQLException:“EndDate”的参数为null
使用该功能检查NULL
数据库值:
updateBuilder.where().isNull("END_DATE");
updateBuilder.updateColumnValue("END_DATE", currentTime);
updateBuilder.update();
正如isNull
的文档所述,我们不能使用equality=
来检查SQLite中的NULL
值(或者任何类型的SQL):
添加一个'IS NULL'子句,使列必须为NULL。'='NULL不起作用
您能指定您得到的错误吗?请提供更多信息,以便提供一个好的答案。
updateBuilder
的类别是什么?您需要检查NULL
,相等可能不起作用(至少它不会直接在SQLite上语义上起作用)。@TimBiegeleisen I'v使用或通常使用orms提供isNull函数。奥姆利特可能也会这样做。类似于where().isNull(“结束日期”)