Sqlite在哪里查询不起作用?

时间:2017-05-04 08:01:32

标签: android sqlite

我正在使用以下查询

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

子组就像" ' XYZ'' ABC' &#34 ;.并且指标和单位是字符串,但查询不会后退任何值,即使它在表中存在。是否有另一种方法在Sqlite中查询。

2 个答案:

答案 0 :(得分:1)

第1部分您需要根据IN中的项目数为subgroup提供占位符(?),因此如果您在子组中有3个项目,并且IndicatorUnit的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});