7

私はこのようにSQLiteを呼び出しています

String[] args = new String[]{"(A,B)"}
Cursor cur = db.query("tab1", null, "name in ?", args, null, null, null);

例外を受け取る:

android.database.sqlite.SQLiteException: near "?": syntax error: , while compiling: SELECT * FROM tab1 WHERE name in ?

inquery() で演算子を使用するには?

私はすでに試しました

String[] args = new String[]{"('A','B')"}
4

4 に答える 4

5
String[] args = new String[]{A,B} // if A, B are variables
String[] args = new String[]{"A","B"}    
Cursor cur = db.query("tab1", null, "name in (?,?)", args, null, null, null);  
于 2013-04-30T08:44:09.817 に答える
0

私が間違っていなければ、引数の解析は IN 句では機能しません。したがって、「?」は使用できません。あなたのWHERE句で。

次のようにする必要があります。

String args = "A, B";
Cursor cur = db.query("tab1", null, "name in (" + args + ")", null, null, null, null);

必要に応じてループを使用して引数を作成します。

于 2013-04-30T08:42:26.417 に答える
0

私が正しく理解していれば、次のように問題を解決できます。

List<String> exercise =  new ArrayList<>();
exercise.add(parameter1);
exercise.add(parameter2);
exercise.add(parameter3);

Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM exersisesenglish WHERE sex " + " 
=?" + " AND level" + "=?" + " AND wish" + "=?" + " AND place" + "=?" + " AND lang" + 
"=?" +" AND stay_exersise IN (" + exercise.get(0) + "," + exercise.get(1) + "," + 
exercise.get(2) + "," + exercise.get(3) + ")", new String[]{String.valueOf(sex), 
String.valueOf(level), String.valueOf(wish), String.valueOf(place), 
String.valueOf(loc)});
于 2018-11-15T19:59:43.300 に答える