Android - 将字段名称作为selectionArgs传递给rawQuery

时间:2013-07-07 10:25:48

标签: android sqlite cursor

我在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中的任何行。有关为什么会发生这种情况的任何想法?很高兴提供任何额外信息。

1 个答案:

答案 0 :(得分:1)

参数总是替换特定值,而不是其他任何值。

当您将字符串“ltGroups.GLOBAL_ID”放入参数数组时,它将被解释为字符串。

(要显示所有记录,只需省略WHERE子句。)