パート1あなたはsubgroup
内のアイテムの数に基づいて、プレースホルダ(?)IN
のために提供する必要があるので、あなたが作る3つのサブグループ内の項目、およびIndicator
のための2とUnit
を持っている場合、クエリは次のようになります :
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", new String[]{subgroup, indicator, unit});
パート2あなたはカンマ区切りでsubgroup
を使用することはできません、それが配列である必要があります。 したがって、長さが等しい(1つのサブグループ項目の数、+ 2)1つの大きな配列が必要で、その配列のすべてのパラメータ値をマージします。
再び問合せは、(すべてのparamsは、アレイoneBigArrayOfParams
にマージされていると仮定)次のようになります。
Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM DATA where Subgroup IN (?,?,?) and Indicator=? and Unit=? ", oneBigArrayOfParams);
数値が数値の場合は '' 'で囲まなければなりません。これはプリペアドステートメントを使用する方法ではありません。また、(Sql Injection)のようにいくつかのセキュリティ上の問題があります。ウェブサイトでは、それは最小の悪い練習になる可能性がありますか? – Yazan