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.