Gdy podasz pojedynczy ciąg jako whereArgs
, pojedynczy ciąg kończy się w poleceniu SQL, tak jakbyś napisał to:
... WHERE _id IN ('1,2,42')
Porównałoby to każdy _id
wartość względem wartości '1,2,42'
, co oczywiście nie działa.
Jeśli użyjesz trzech znaczników parametrów i podasz trzy ciągi w whereArgs
tablicę, otrzymasz trzy ciągi, tak:
... WHERE _id in ('1','2','42')
Działa to tylko wtedy, gdy _id
kolumna ma powinowactwo do liczb całkowitych, co jest prawdziwe dla kolumny zadeklarowanej jako INTEGER PRIMARY KEY, ale nie w ogólnym przypadku.
Interfejs API bazy danych systemu Android nie zezwala na to, aby parametry zapytania miały jakikolwiek typ oprócz ciągu.W przypadku używania liczb całkowitych należy je po prostu wstawić bezpośrednio (jak w odpowiedzi ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";