Cuando das una sola cadena como whereArgs
, una sola cadena termina en el comando SQL, como si hubieras escrito esto:
... WHERE _id IN ('1,2,42')
Esto compararía cada _id
valor contra el valor '1,2,42'
, que por supuesto no funciona.
Si usa tres marcadores de parámetros y proporciona tres cadenas en whereArgs
matriz, terminaría con tres cadenas, como esta:
... WHERE _id in ('1','2','42')
Esto funciona solo cuando el _id
columna tiene afinidad de enteros, lo cual es cierto para una columna declarada como INTEGER PRIMARY KEY, pero no en el caso general.
La API de la base de datos de Android no permite que los parámetros de consulta tengan otro tipo que no sea una cadena. Al usar números enteros, solo debe insertarlos directamente (como en la respuesta de ianhanniballake):
String whereClause = getIdColumn() + " IN (" + TextUtils.join(",", ids) + ")";