SQLite
 sql >> Database >  >> RDS >> SQLite

selectionArgs in SQLiteQueryBuilder non funziona con valori interi nelle colonne

Che i parametri della query possano essere solo stringhe è un terribile errore di progettazione nell'API del database Android.

Nonostante ciò che dice la documentazione, dovresti usare i parametri solo per i valori di stringa effettivi; i valori interi possono essere incorporati in modo sicuro direttamente nella stringa SQL. (Per i BLOB, devi utilizzare una funzione che accetti ContentValues .)

Tieni presente che mentre SQLite utilizza la tipizzazione dinamica, i valori di tipi diversi non confronta uguale nella maggior parte dei casi (SELECT 42='42'; restituisce 0 ).Ci sono alcuni casi in cui SQLite fa converte automaticamente i valori a causa dell'affinità del tipo (nel tuo caso, ciò accadrebbe se dichiarassi l'id colonna come INTEGER ), ma questo è piuttosto controintuitivo, quindi non dovrebbe essere fatto affidamento.