Когато дадете един низ като whereArgs
, един низ завършва в SQL командата, сякаш сте написали това:
... WHERE _id IN ('1,2,42')
Това ще сравни всеки _id
стойност спрямо стойността '1,2,42'
, което разбира се не работи.
Ако използвате три маркера за параметри и дадете три низа в whereArgs
масив, ще получите три низа, като този:
... WHERE _id in ('1','2','42')
Това работи само когато _id
колоната има целочислен афинитет, което е вярно за колона, декларирана като INTEGER PRIMARY KEY, но не и в общия случай.
API на база данни на Android не позволява на параметрите на заявката да имат какъвто и да е тип, освен низ. Когато използвате цели числа, трябва просто да ги вмъкнете директно (както в отговора на ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";