SQLite
 sql >> Datenbank >  >> RDS >> SQLite

selectionArgs in SQLiteQueryBuilder funktioniert nicht mit ganzzahligen Werten in Spalten

Dass Abfrageparameter nur Zeichenfolgen sein können, ist ein schrecklicher Designfehler in der Android-Datenbank-API.

Ungeachtet dessen, was die Dokumentation sagt, sollten Sie Parameter nur für tatsächliche Zeichenfolgenwerte verwenden; Integer-Werte können sicher direkt in die SQL-Zeichenfolge eingebettet werden. (Für Blobs müssen Sie eine Funktion verwenden, die ContentValues akzeptiert .)

Bitte beachten Sie, dass SQLite zwar dynamische Typisierung verwendet, Werte unterschiedlicher Typen jedoch nicht Vergleich in den meisten Fällen gleich (SELECT 42='42'; gibt 0 zurück ).Es gibt einige Fälle, in denen SQLite es tut Werte aufgrund der Typaffinität automatisch umwandeln (in Ihrem Fall würde dies passieren, wenn Sie die id deklarieren Spalte als INTEGER ), aber das ist eher kontraintuitiv, also sollte man sich nicht darauf verlassen.