whereArgs
として単一の文字列を指定する場合 、次のように記述したかのように、SQLコマンドに1つの文字列が含まれることになります。
... WHERE _id IN ('1,2,42')
これにより、各_id
が比較されます 値に対する値'1,2,42'
、もちろん機能しません。
3つのパラメーターマーカーを使用し、whereArgs
に3つの文字列を指定した場合 配列の場合、次のように3つの文字列になります。
... WHERE _id in ('1','2','42')
これは、_id
の場合にのみ機能します 列には整数のアフィニティがあります。これは、INTEGER PRIMARY KEYとして宣言された列には当てはまりますが、一般的な場合には当てはまりません。
AndroidデータベースAPIでは、クエリパラメータに文字列以外のタイプを含めることはできません。整数を使用する場合は、整数を直接挿入する必要があります(ianhanniballakeの回答のように):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";