Když zadáte jeden řetězec jako whereArgs
, jeden řetězec skončí v příkazu SQL, jako byste napsali toto:
... WHERE _id IN ('1,2,42')
To by porovnalo každé _id
hodnotu proti hodnotě '1,2,42'
, což samozřejmě nefunguje.
Pokud použijete tři značky parametrů a zadáte tři řetězce do whereArgs
pole, skončili byste se třemi řetězci takto:
... WHERE _id in ('1','2','42')
Toto funguje pouze v případě, že _id
sloupec má celočíselnou afinitu, což platí pro sloupec deklarovaný jako INTEGER PRIMARY KEY, ale ne v obecném případě.
Databázové rozhraní Android API neumožňuje, aby parametry dotazu měly jakýkoli typ kromě řetězce. Při použití celých čísel byste je měli vložit přímo (jako v odpovědi ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";