SQL占位符(“?”)在SQLiteDatabae.update中不起作用

时间:2012-03-17 21:57:39

标签: android sqlite

我在Update子类的ContentProvider方法中有以下代码:

当我使用Where子句的占位符时,我的更新不起作用(count等于0):

不起作用:

rowID = uri.getPathSegments().get(1);
whereStr = "?=?";
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr, new String[]{PathSQLTable.ID_KEY,rowID});

但如果我手动进行替换,一切正常。

这有效:

rowID = uri.getPathSegments().get(1);
whereStr = PathSQLTable.ID_KEY + "=" + rowID;
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr, null);

我的问题是 - 占位符逻辑中是否存在错误(如this post中所述)或我做错了什么?

1 个答案:

答案 0 :(得分:3)

它只适用于sql查询中的输入参数,而不适用于列名。所以如果你试试这个应该有用:

rowID = uri.getPathSegments().get(1);
whereStr = PathSQLTable.ID_KEY + " = ?";
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr,new String[]{rowID});