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

selectionArgs en SQLiteQueryBuilder no funciona con valores enteros en columnas

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 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.