我知道关于这个的问题已经太多了,相信我,我已经尽我所能阅读答案以找到解决方案。不幸的是,我找不到我的错误
这是我的代码:
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.name
和expired
列的值 = 0
。如果找到,SET
记录的 eat_it
列为 1
和 expired
列为 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/