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) + ")";