Saat Anda memberikan satu string sebagai whereArgs
, satu string berakhir di perintah SQL, seolah-olah Anda telah menulis ini:
... WHERE _id IN ('1,2,42')
Ini akan membandingkan setiap _id
nilai terhadap nilai '1,2,42'
, yang tentu saja tidak berfungsi.
Jika Anda menggunakan tiga penanda parameter dan memberikan tiga string di whereArgs
array, Anda akan mendapatkan tiga string, seperti ini:
... WHERE _id in ('1','2','42')
Ini hanya berfungsi bila _id
kolom memiliki afinitas bilangan bulat, yang benar untuk kolom yang dideklarasikan sebagai KUNCI UTAMA INTEGER, tetapi tidak dalam kasus umum.
API database Android tidak mengizinkan parameter kueri memiliki tipe apa pun kecuali string. Saat menggunakan bilangan bulat, Anda harus memasukkannya secara langsung (seperti dalam jawaban ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";