Wenn Sie eine einzelne Zeichenfolge als whereArgs
angeben , endet ein einzelner String im SQL-Befehl, als ob Sie Folgendes geschrieben hätten:
... WHERE _id IN ('1,2,42')
Dies würde jede _id
vergleichen Wert gegen den Wert '1,2,42'
, was natürlich nicht funktioniert.
Wenn Sie drei Parametermarkierungen verwenden und drei Zeichenfolgen in den whereArgs
angeben array erhalten Sie am Ende drei Strings wie diese:
... WHERE _id in ('1','2','42')
Dies funktioniert nur, wenn die _id
Spalte hat ganzzahlige Affinität, was für eine als INTEGER PRIMARY KEY deklarierte Spalte gilt, aber nicht im allgemeinen Fall.
Die Android-Datenbank-API erlaubt keinen anderen Typ als Zeichenfolge für Abfrageparameter. Wenn Sie Ganzzahlen verwenden, sollten Sie sie einfach direkt einfügen (wie in der Antwort von ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";