Que los parámetros de consulta solo puedan ser cadenas es un horrible error de diseño en la API de la base de datos de Android.
A pesar de lo que dice la documentación, debe usar parámetros solo para valores de cadena reales; los valores enteros se pueden incrustar de forma segura directamente en la cadena SQL. (Para blobs, debe usar una función que acepte ContentValues
.)
Tenga en cuenta que, si bien SQLite usa escritura dinámica, los valores de diferentes tipos no comparar iguales en la mayoría de los casos (SELECT 42='42';
devuelve 0
). Hay algunos casos en los que SQLite sí convierte valores automáticamente debido a la afinidad de tipo (en su caso, esto sucedería si declarara el id
columna como INTEGER
), pero esto es bastante contrario a la intuición, por lo que no se debe confiar en él.