0

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

4

1 回答 1

1

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

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

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

于 2013-07-07T13:17:55.110 回答