SQLite
 sql >> Database >  >> RDS >> SQLite

Eliminare più righe utilizzando gli ID?

Quando dai una singola stringa come whereArgs , una singola stringa finisce nel comando SQL, come se avessi scritto questo:

... WHERE _id IN ('1,2,42')

Questo confronterebbe ogni _id valore rispetto al valore '1,2,42' , che ovviamente non funziona.

Se usi tre indicatori di parametro e fornisci tre stringhe in whereArgs array, ti ritroverai con tre stringhe, come questa:

... WHERE _id in ('1','2','42')

Funziona solo quando il _id la colonna ha un'affinità intera, che è vera per una colonna dichiarata come INTEGER PRIMARY KEY, ma non nel caso generale.

L'API del database Android non consente ai parametri di query di avere alcun tipo ma stringa. Quando si utilizzano numeri interi, è sufficiente inserirli direttamente (come nella risposta di ianhanniballake):

String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";