sql >> Base de Datos >  >> RDS >> SQLite

¿Eliminar varias filas usando ID?

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) + ")";