"WHERE"附近的 Android 数据库更新 : syntax error

标签 android sqlite sql-update

我知道关于这个的问题已经太多了,相信我,我已经尽我所能阅读答案以找到解决方案。不幸的是,我找不到我的错误

这是我的代码:

SQLiteDatabase db = getWritableDatabase();

ContentValues values = new ContentValues();
values.put("eat_it", 1);
values.put("expired", 1);
String[] args = {food.name, "0"};

db.update("foods", values, "name=? AND expired=?", args);
db.close();

我想做的事情:

在表 foods WHERE 中找到一条记录 name = food.nameexpired 列的值 = 0。如果找到,SET 记录的 eat_it 列为 1expired 列为 1 .如果没有找到记录,什么也不做

这是我的创建表语法:

CREATE TABLE IF NOT EXISTS foods (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT,
    ...
    eat_it INTEGER DEFAULT 0,
    expired INTEGER DEFAULT 0
);

这是错误信息:

...
 Caused by: android.database.sqlite.SQLiteException: near "WHERE": syntax error (code 1): , while compiling: UPDATE foods SET expired=?,eat_it=? WHERE name ='Taco Salad'WHERE expired = 0
...

谢谢你的帮助

====更新====

显然,在我重新启动计算机后,它就可以正常工作了。我认为我的模拟器工作不正常/仍然有旧代码。感谢大家的帮助

最佳答案

根据您的帖子返回的错误消息

near "WHERE": syntax error (code 1): , while compiling: UPDATE foods SET expired=?,eat_it=? WHERE name ='Taco Salad'WHERE expired = 0

从错误语句中可以清楚地看出,您的查询中有两个 WHERE 子句,因此出现了错误。

UPDATE foods SET expired=?,eat_it=? 
WHERE name ='Taco Salad'
WHERE expired = 0 <-- Here

您的UPDATE 语句应该如下所示

UPDATE foods SET expired=?,eat_it=? 
WHERE name ='Taco Salad'
AND expired = 0 

关于 "WHERE"附近的 Android 数据库更新 : syntax error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31735485/

相关文章:

java.lang.ClassNotFoundException : org. sqlite.JDBC

database - MicrosoftEntityFrameworkCore 无法从程序集中找到迁移

mysql - 为什么更新后mysql row_count总是-1?

android - 当我尝试在 Eclipse 上安装 ADT 时出现什么问题?

android - 关于通过 Google Play 控制台发布代号为一个应用程序的警告消息“开始推出”按钮已禁用

Python大列表和输入数据库

MYSQL:一列中的数据依赖于另一列

mysql - 更新sql以仅在日期时间中更改时间

java - 如何为一个按钮设置多个标签?

android - Firebase 电话验证短信代码 null android