Android "WHERE" 附近的数据库更新:语法错误

Android DB Update near "WHERE": syntax error

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

这是我的代码:

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();

我想做的事情:

在tablefoodsWHERE列的值name=food.nameexpired列的值中查找一条记录= 0。如果找到,SET 记录的 eat_it 列到 1expired 列到 1。如果没有找到记录,什么都不做

这是我创建的 table 语法:

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
...

感谢您的帮助

====更新====

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

根据您的 post

返回的错误消息

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 

您可以在不使用 'whereArgs' 的情况下使用 where 语句,如下所示:

db.update("foods", values, "name="+food.name+" AND expired=0", null);

此外,由于您正在更新内部值,您还可以尝试一个简单的查询:

db.rawquery("UPDATE foods SET eat_it=1, expired=1 WHERE name="+food.name+" AND expired=0");

虽然你在那里写的应该没有问题,但你可以尝试这两个选项来使它起作用。