带有参数化WHERE的Android SQLite UPDATE不起作用

时间:2016-11-09 17:48:57

标签: android sqlite

此查询无法更新(更新为0):

int updated = db.update(TABLE_NAME, values,
   COLUMN_NAME_ACCOUNT_ID + "= ? AND " + COLUMN_NAME_TOPIC + "= ?",
   new String[] { String.valueOf(id), name });

但这很好用,更新= 1:

int updated = db.update(TABLE_NAME, values,
   COLUMN_NAME_ACCOUNT_ID + "=" + id + 
       " AND " + COLUMN_NAME_TOPIC + "='" + name + "'",
   null);

唯一的区别是如何构造WHERE - 显式或通过参数。发生了什么事?

SQLite 3.8.10.2有货Android模拟器。

1 个答案:

答案 0 :(得分:0)

account_id列包含数字。与字符串(String.valueOf(id))的比较永远不会成功。

Android数据库API仅支持字符串参数,因此您必须将ID直接插入字符串:

int updated = db.update(TABLE_NAME, values,
      COLUMN_NAME_ACCOUNT_ID + "=" + id + " AND " + COLUMN_NAME_TOPIC + "= ?",
      new String[] { name });