Android Sqlite在查询中的何处不工作?

Android Sqlite在查询中的何处不工作?,android,sqlite,Android,Sqlite,我使用下面的查询 Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?) and Indicator=? and Unit=? ", new String[]{subgroup, indicator, unit}); 子组类似于“'xyz','abc'”。和指示符和单位是字符串,但即使在表中存在,查询也不会返回任何值。在Sqlite中是否有其他查询方法。Part-1您需要根据子组

我使用下面的查询

Cursor cursor = sqLiteDatabase.rawQuery("SELECT  * FROM  DATA   where Subgroup IN (?) and Indicator=? and Unit=? ", new String[]{subgroup, indicator, unit});

子组类似于“'xyz','abc'”。和指示符和单位是字符串,但即使在表中存在,查询也不会返回任何值。在Sqlite中是否有其他查询方法。

Part-1您需要根据
子组中的项数为
中的
提供占位符(?),因此如果子组中有3项,对于使查询如下所示的
指标
单位
,则为2:

Cursor cursor = sqLiteDatabase.rawQuery("SELECT  * FROM  DATA   where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", new String[]{subgroup, indicator, unit});
第2部分不能使用逗号分隔的
子组
,它必须是一个数组。 所以需要1个长度等于(子组项计数+2)的大数组,并合并该数组中的所有参数值

同样,查询将如下所示(假设所有参数都合并到数组
oneBigArrayOfParams
):


我不认为这是正确的方法,但我使用了下面的语句和它的工作原理


Cursor Cursor=sqLiteDatabase.rawQuery(“从数据中选择*,其中子组位于(“+Subgroup+”)中,指示符=?和单位=?”,新字符串[]{Indicator,Unit})

如果值是数值,这将起作用,否则它们必须包装在
中。另外,这不是如何使用准备好的语句。。。另外,这里可能存在一些安全问题(Sql注入),尽管它不像在web站点中那样公开,但至少它可能是一种不好的做法?
Cursor cursor = sqLiteDatabase.rawQuery("SELECT  * FROM  DATA   where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", oneBigArrayOfParams);