Java SQLite 更新查询不起作用

标签 java android sqlite

经过几个小时(基本上是一整天)的挣扎、总结我的想法等等之后,我很困惑为什么我在 SQLite 中的 UPDATE 语句不想工作。 它涉及以下查询:

sql.Update("UPDATE SAVEGAME SET _id = \"save\" WHERE _id = null");
sql.Update("UPDATE SAVEGAME SET WORLD_ONE = \""+finishedLevels+"\" WHERE _id = 'save'");

我也尝试过

sql.Update("UPDATE SAVEGAME SET _id = 'save' WHERE _id = null");
sql.Update("UPDATE SAVEGAME SET WORLD_ONE = '"+finishedLevels+"' WHERE _id = 'save'");

但没有效果。

我调用的函数是这样的:

public void Update(String query){
    SQLiteDatabase db = this.getWritableDatabase();
    db.execSQL(query);

    db.close();
}

调试清楚地表明函数正在被调用并单步执行,但拒绝工作。 我调用的任何其他 SQL 函数(例如创建新表等)都有其 db.close() 调用。

我还尝试查看另一个项目,其中 UDPATE 语句确实有效,但我找不到任何差异(我的 SQLLib 类的实例、函数调用是相同的,等等) 调用 UPDATE 语句看起来很简单,但它在某个地方出现了错误。

这个错在哪里?因为我现在完全不知所措。

-祖巴贾

最佳答案

当您需要使用 is null 时,您正在使用 = null:

更改:

sql.Update("UPDATE SAVEGAME SET _id = \"save\" WHERE _id = null");

对此:

sql.Update("UPDATE SAVEGAME SET _id = \"save\" WHERE _id is null");
                                                        ^^^^

此外,您可能需要检查如何创建 SQL 字符串 - 插入这样的变量会使您的代码容易受到 SQL 注入(inject)攻击。

关于Java SQLite 更新查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28092782/

相关文章:

java - 我想使用java发送邮件而不延迟

android - cordova/ionic 应用程序在旧版本的 Android 上启动后崩溃

Android AChartEngine 错误

swift - Inter-App Data Migration(将数据迁移到新的应用程序版本)

java - 使用 ReadableByteChannel 和 TransferFrom() 编写输入流

java - 原始文本、Java 运行的解密和 Android 运行的解密都(略有)不同

android - 用于 eclipse 项目的 quickblox-chat android jar 文件

iphone - 将日期保存到 SQLite

reflection - 如何获取 SQLite 数据库表中列的列表?

java - 具有两个无序字段的唯一哈希码