2017-05-04 151 views
-1

我使用下面的查詢在查詢不工作的Sqlite?

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

羣就像是 「 '某某', 'ABC'」。而指標和單位是字符串,但查詢不會返回任何值,即使它存在於表中。是否有另一種方法在Sqlite中查詢。

回答

1

部分-1,你需要根據在subgroup項目的數量,以提供IN佔位符(?),所以如果你有在亞組3項,和2 IndicatorUnit,使查詢看起來是這樣的:

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

部分-2不能使用subgroup用逗號分隔的,它必須是一個數組。 所以你需要一個長度相等的大陣列(子組項數+ 2)併合並該陣列中的所有參數值。

再次查詢看起來像這樣(假設所有PARAMS合併到陣列oneBigArrayOfParams):

Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", oneBigArrayOfParams); 
0

我不認爲它正確的方式,但我用下面的語句和它的工作。遊標cursor = sqLiteDatabase.rawQuery(「SELECT * FROM DATA where Subgroup IN(」+ subgroup +「)and Indicator =?and Unit =?」,new String [] {indicator,unit});}};}};

+1

這將工作,如果值是數字,否則他們必須包裹在'''加,這不是如何使用預處理語句......也有一些安全問題可能在這裏(Sql注入),雖然它沒有公開在一個網站,但它可能是一個壞的做法最低? – Yazan