SQLite
 sql >> Base de données >  >> RDS >> SQLite

selectionArgs dans SQLiteQueryBuilder ne fonctionne pas avec des valeurs entières dans les colonnes

Le fait que les paramètres de requête ne puissent être que des chaînes est une horrible erreur de conception dans l'API de base de données Android.

Malgré ce que dit la documentation, vous ne devez utiliser les paramètres que pour les valeurs de chaîne réelles ; les valeurs entières peuvent être incorporées en toute sécurité directement dans la chaîne SQL. (Pour les blobs, vous devez utiliser une fonction qui accepte ContentValues .)

Veuillez noter que bien que SQLite utilise le typage dynamique, les valeurs de différents types ne le font pas comparer égal dans la plupart des cas (SELECT 42='42'; renvoie 0 ).Il y a des cas où SQLite fait convertir automatiquement les valeurs en raison de l'affinité de type (dans votre cas, cela se produirait si vous aviez déclaré le id colonne sous la forme INTEGER ), mais c'est plutôt contre-intuitif, il ne faut donc pas s'y fier.