0

そんな感じで問い合わせをすると

String where = "_id in(select phrase_id from words where word like '%FIRST%' intersect select phrase_id from words where word like '%SECOND%')";
Cursor cursor = database.query(PHRASES_TABLE, columns, where, null, null, null, null);

それは正しく動作します。しかし、ハードコードされた値の代わりに selectionArgs を使用しようとすると


String where = "_id in(select phrase_id from words where word like '%?%' intersect select phrase_id from words where word like '%?%')";
String[] args = {"FIRST", "SECOND"};
Cursor cursor = database.query(PHRASES_TABLE, columns, where, args, null, null, null);

捕まえる

android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException: bind or column index out of range: handle 0x10b71e0
ありがとう。

4

1 に答える 1

4

?プレースホルダーを文字列リテラルに含めることはできませんが、SQL 文字列連結を使用してリテラル||と組み合わせることができます。?%

String where = "_id in(select phrase_id from words where word like '%' || ? || '%' intersect select phrase_id from words where word like '%' || ? || '%')";
于 2013-10-21T10:45:21.720 に答える