我在Android中将以下语句作为rawQuery传递:
SELECT DISTINCT ltUsers._id,ltUsers.NAME,ltUsers.GLOBAL_ID, ltGroups.GROUP_NAME
FROM ltUsers
JOIN ltGroups ON (ltUsers.GROUP_ID = ltGroups.GLOBAL_ID)
WHERE ltgroups.GLOBAL_ID = ? " +
ORDER BY ltUsers.NAME ASC,ltgroups.GLOBAL_ID ASC;
使用rawQuery如下:
Cursor c = db.rawQuery(sql,args)
如果我将值传递给参数,例如
,它就可以正常工作String[] args = new String[]{"2"}
但是,我还希望能够通过GLOBAL_ID
子句中的WHERE
显示所有行。通过直接将参数直接写入语句来测试我在Android之外的SQLite数据库以及Android中的转储 - 显示以下子句是一种有效的方法:
WHERE ltGroups.GLOBAL_ID = ltGroups.GLOBAL_ID
然而,当我将字段引用ltGroups.GLOBAL_ID
或[ltGroups].[GLOBAL_ID]
作为参数传递时,它无法返回rawQuery中的任何行。有关为什么会发生这种情况的任何想法?很高兴提供任何额外信息。
答案 0 :(得分:1)
参数总是替换特定值,而不是其他任何值。
当您将字符串“ltGroups.GLOBAL_ID
”放入参数数组时,它将被解释为字符串。
(要显示所有记录,只需省略WHERE
子句。)