android - 删除查询时在 "<"附近出现 SQLiteException

标签 android sqlite android-sqlite where-clause

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

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

在上面的代码中nDayOldTimeInMills = 1429963811949DBUtils.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 - 删除查询时在 "<"附近出现 SQLiteException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30002187/

相关文章:

iphone - 如何使 iPhone 应用程序中的 SQLite 数据库可用于桌面?

javascript - 我正在尝试配置一个简单的 DbHelper,但在执行相同操作时出现错误

android - 在命令行上开发 Android kotlin 应用程序与 Android Java 应用程序的区别(没有 android studio)

java - 如何在android中的TabView中添加四个选项卡

c - 如何从查询中删除 MS SQL TOP 子句以使其在 SQLite 上运行

android - 为什么在 Kindle Fire 设备上调试 Android 应用程序时无法查看本地 SQLite 数据库?

java - 如何避免 DB4o 数据库中的重复对象

java - 在 Android 中操作 3D 模型?

android - 无法在 Android 设备的外部存储中创建文件夹

php - 需要将所有结果从 SQLite3Result 获取到多数组