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

Android SQL占位符(“?”)在SQLiteDatabae.update中不起作用,android,sqlite,Android,Sqlite,我在ContentProvider子类的更新方法中有以下代码: 当我为Where子句使用占位符时,我的更新不起作用计数等于0: 不起作用: 但是如果我手动进行取代,一切都会正常 这项工作: 我的问题是-占位符逻辑中是否存在如中所建议的错误,或者我是否做错了什么?它仅适用于sql查询中的输入参数,而不适用于列名称。因此,如果您尝试以下方法,它应该会起作用: rowID = uri.getPathSegments().get(1); whereStr = PathSQLTable.ID_KEY +

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

当我为Where子句使用占位符时,我的更新不起作用计数等于0:

不起作用:

但是如果我手动进行取代,一切都会正常

这项工作:


我的问题是-占位符逻辑中是否存在如中所建议的错误,或者我是否做错了什么?

它仅适用于sql查询中的输入参数,而不适用于列名称。因此,如果您尝试以下方法,它应该会起作用:

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

有趣的您知道在我的“不工作”案例中,什么作为SQL查询发送吗?android没有抛出错误,它只返回零。我只知道提供的列名没有使用?。这与C中的相同,例如,从客户中选择*,其中city=@city,其中@city通过cmd.Parameters提供。AddWithValue@City斯德哥尔摩然而,在您的“不工作”查询中,我相信它可以翻译吗?例如'ID_KEY'=6,因此ID_KEY被视为字符串值,而不是列名,但这只是我的假设:好的,这将解释为什么它是一个返回零记录的有效查询。谢谢
rowID = uri.getPathSegments().get(1);
whereStr = PathSQLTable.ID_KEY + "=" + rowID;
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr, null);
rowID = uri.getPathSegments().get(1);
whereStr = PathSQLTable.ID_KEY + " = ?";
count = db.update(PathSQLTable.TABLE_NAME, values, whereStr,new String[]{rowID});