SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Excluir várias linhas usando IDs?


Quando você fornece uma única string como whereArgs , uma única string termina no comando SQL, como se você tivesse escrito isso:
... WHERE _id IN ('1,2,42')

Isso compararia cada _id valor em relação ao valor '1,2,42' , o que obviamente não funciona.

Se você usar três marcadores de parâmetro e fornecer três strings no whereArgs array, você terminaria com três strings, assim:
... WHERE _id in ('1','2','42')

Isso funciona apenas quando o _id coluna tem afinidade de inteiro, o que é verdade para uma coluna declarada como INTEGER PRIMARY KEY, mas não no caso geral.

A API de banco de dados do Android não permite que os parâmetros de consulta tenham qualquer tipo além de string. Ao usar números inteiros, você deve apenas inseri-los diretamente (como na resposta de ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";