gpt4 book ai didi

java - 尝试更新Android中sqlite最后一条记录中的某一列

转载 作者:行者123 更新时间:2023-12-02 07:30:52 25 4
gpt4 key购买 nike

我有一个这样构造的数据库

uid | username | password |     email   | cur_level
1 default abc123 me@email.com 0

在我的游戏中,当您在主要 Activity 中完成一个关卡后,我会运行一个名为 increase_current_level() 的方法 值++; test_db.open(); test_db.updateLevel(值); cur_level = 值; test_db.close();

所以这似乎没有问题,但是当运行 test_db.updateLevel(value) 时,程序崩溃了。

在我的 DBHelper 中,更新级别的代码如下。

public boolean updateLevel(String level) {
ContentValues args = new ContentValues();

args.put(KEY_CUR_LEVEL, level);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + "="
+ "WHERE id=(SELECT max(id) FROM DATABASE_TABLE)", null) > 0;

}

我的日志猫错误似乎是:

10-17 17:36:10.833: E/AndroidRuntime(1815): Caused by: android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): , while compiling: UPDATE test SET cur_level=? WHERE _id=WHERE id=(SELECT max(id) FROM DATABASE_TABLE)

我对 SQLite 很陌生,所以这有点令人生畏,但我希望有人能看到一个非常明显的缺陷。谢谢

更新 1:

我更新的代码:

public boolean updateLevel(String level) {
ContentValues args = new ContentValues();

args.put(KEY_CUR_LEVEL, level);
return mDb.update(DATABASE_TABLE, args, KEY_ROWID + " = (SELECT max(id) FROM DATABASE_TABLE",
null) > 0;

}

更新了错误消息:

10-17 18:26:50.804: E/AndroidRuntime(3684): Caused by: android.database.sqlite.SQLiteException: near "DATABASE_TABLE": syntax error (code 1): , while compiling: UPDATE test SET cur_level=? WHERE _id = (SELECT max(id) FROM DATABASE_TABLE

最佳答案

mDb.update 的语法是

update(table, ContentValues values, String whereClause, String[] whereArgs)

假设KEY_ROWID = "id"

对于你的 whereClause,你实际上是在传递

"id = WHERE id = (SELECT max(id) FROM DATABASE_TABLE"

这不是有效的 SQL。

您似乎不需要“id =”。只需以“WHERE id=”开始 WHERE 子句

但是,您的问题意味着您在数据库中只有一条记录。为什么要使用一个数据库来存储一条记录?如果其中有多条记录,则应使用 WHERE 子句来搜索唯一的内容,而不是使用 SELECT max(id)

底线是您需要提高 SQL 知识。

关于java - 尝试更新Android中sqlite最后一条记录中的某一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12943892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com