Når du giver en enkelt streng som whereArgs
, en enkelt streng ender i SQL-kommandoen, som om du havde skrevet dette:
... WHERE _id IN ('1,2,42')
Dette ville sammenligne hver _id
værdi mod værdien '1,2,42'
, hvilket selvfølgelig ikke virker.
Hvis du bruger tre parametermarkører og giver tre strenge i whereArgs
array, ville du ende med tre strenge, som denne:
... WHERE _id in ('1','2','42')
Dette virker kun, når _id
kolonne har heltals affinitet, hvilket er sandt for en kolonne, der er erklæret som INTEGER PRIMARY KEY, men ikke i det generelle tilfælde.
Android-database-API'en tillader ikke forespørgselsparametre at have andre typer end streng. Når du bruger heltal, skal du bare indsætte dem direkte (som i ianhanniballakes svar):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";