Wanneer je een enkele string opgeeft als whereArgs , een enkele string komt terecht in het SQL-commando, alsof je dit had geschreven:
... WHERE _id IN ('1,2,42')
Dit zou elke _id . vergelijken waarde tegen de waarde '1,2,42' , wat natuurlijk niet werkt.
Als u drie parametermarkeringen gebruikt en drie tekenreeksen geeft in de whereArgs array, zou je eindigen met drie strings, zoals deze:
... WHERE _id in ('1','2','42')
Dit werkt alleen als de _id kolom heeft een geheeltallige affiniteit, wat waar is voor een kolom die is gedeclareerd als INTEGER PRIMARY KEY, maar niet in het algemeen.
De Android-database-API staat niet toe dat queryparameters een ander type hebben dan een tekenreeks. Als u gehele getallen gebruikt, moet u ze gewoon rechtstreeks invoegen (zoals in het antwoord van ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";