SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Mehrere Zeilen mit IDs löschen?

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