数据库
首页 > 数据库> > android – 删除查询时“<”附近的SQLiteException

android – 删除查询时“<”附近的SQLiteException

作者:互联网

我试图从我的SQLite数据库中删除几行,如下所示:

dbUtilsObj.delete(EngineUtiReport.TABLE_NAME, 
    EngineUtiReport.Columns.KEY_ENGINE_UTI_UNIX_TIME + DBUtils.IS_LESS_THAN,
    new String[] { String.valueOf(nDaysOldUnixTime) });

在上面的代码中,nDayOldTimeInMills = 1429963811949和DBUtils.IS_LESS_THAN =“<”. 但我得到这个语法错误异常,我只是无法弄清楚我做错了什么:

android.database.sqlite.SQLiteException: near "<": syntax error (code 1): , 
while compiling: DELETE FROM engine_utilization_report WHERE unix_time <
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1113)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:686)

解决方法:

使用参数化查询时,您需要指定将参数插入查询的位置.你这样做是通过添加?参数应该去哪里.现在看一下异常中的查询,看起来很明显是错的:

DELETE FROM engine_utilization_report WHERE unix_time <

注意unix_time<在末尾?的?不见了.正确的查询应如下所示:

DELETE FROM engine_utilization_report WHERE unix_time < ?

要修复错误,您只需要添加?在where子句的末尾,像这样:

dbUtilsObj.delete(EngineUtiReport.TABLE_NAME, 
    EngineUtiReport.Columns.KEY_ENGINE_UTI_UNIX_TIME + DBUtils.IS_LESS_THAN + "?",
    new String[] { String.valueOf(nDaysOldUnixTime) });

标签:android,sqlite,android-sqlite,where-clause
来源: https://codeday.me/bug/20190824/1710468.html