我正在使用以下查询
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?) and Indicator=? and Unit=? ", new String[]{subgroup, indicator, unit});
子组就像" ' XYZ'' ABC' &#34 ;.并且指标和单位是字符串,但查询不会后退任何值,即使它在表中存在。是否有另一种方法在Sqlite中查询。
答案 0 :(得分:1)
第1部分您需要根据IN
中的项目数为subgroup
提供占位符(?),因此如果您在子组中有3个项目,并且Indicator
和Unit
的2,使查询如下所示:
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", new String[]{subgroup, indicator, unit});
第2部分您不能使用逗号分隔的subgroup
,它必须是数组。
所以你需要一个长度相等的大数组(子组项的数量,+ 2)并合并该数组中的所有参数值。
再次查询将如下所示(假设所有参数都合并到数组oneBigArrayOfParams
):
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", oneBigArrayOfParams);
答案 1 :(得分:0)
我不认为它是正确的方法,但我使用了以下声明及其工作。
Cursor cursor = sqLiteDatabase.rawQuery(“SELECT * FROM DATA where Subgroup IN(”+ subgroup +“)and Indicator =?and Unit =?”,new String [] {indicator,unit});