2

私のプロジェクトでは、複数の値を選択してクエリに渡す必要があります。つまり、page1 にはチェックボックスが含まれています。選択したチェックボックスの ID を配列に格納しています。その配列をシャッフルして値をランダムに取得しています。次に、これらのランダムな値をクエリに渡す必要があります。データベースで IN 演算子を使用すると、値を静的に渡すことができますが、値を動的にクエリに渡すにはどうすればよいですか。

例:(静的に​​値を渡す)

SELECT * FROM Persons WHERE person_id IN ('21','22')

上記のクエリでは、ID の 21 と 22 は以前にわかっているため、静的に渡していますが、動的にクエリに値を送信したいと考えています。

Page1:
public static ArrayList<String> chksublist = new ArrayList<String>();

Page2:
 Collections.shuffle(chksublist );
SELECT * FROM Persons WHERE person_id IN ('21','22')
In the above line I want to send the random values which are in chksublist array.
4

4 に答える 4

2

String query = "SELECT * FROM Persons WHERE person_id IN (" + TextUtils.join(",", chksublist) + ")";

chksublistただし、SQLクエリに送信する前にシャッフルしても、SQLから取得する結果セットには影響しません。結果をランダムに並べ替えることはありません。取り外しCollections.shuffle(chksublist);て使用する

String query = "SELECT * FROM Persons WHERE person_id IN (" + TextUtils.join(",", chksublist) + ") ORDER BY RANDOM()";

于 2012-09-03T06:34:55.183 に答える
1

このようにクエリを生成できます

int values[];      //it contains your generated values like 21,22....
String query="SELECT * FROM Persons WHERE person_id IN (";

for(int i=0;i<values.length;i++){
query=query+"'"+values[i]+"'";
if(i<values.length-1){
query=query+",";    //No , after last values
} 

}
query+=")";

最後にこのクエリを渡します。

于 2012-09-03T06:29:02.697 に答える
0

それを試してみてください

cursor = database.query(tablename,
                    new String[] {"TopName"}, "id IN(?,?)", new String[]{"2","3"}, null, null, null);

生のクエリを使用する

String query = "SELECT * FROM Persons WHERE person_id IN ("+parameter1+","+parameter2+")";
db.rawQuery(query);
于 2012-09-03T06:30:49.813 に答える