To, že parametry dotazu mohou být pouze řetězce, je hrozná chyba návrhu v rozhraní API databáze Android.
Navzdory tomu, co říká dokumentace, byste měli parametry používat pouze pro skutečné hodnoty řetězců; celočíselné hodnoty lze bezpečně vložit přímo do řetězce SQL. (Pro objekty blob musíte použít funkci, která přijímá ContentValues
.)
Upozorňujeme, že zatímco SQLite používá dynamické psaní, hodnoty různých typů ne ve většině případů porovnat stejné (SELECT 42='42';
vrátí 0
Existují případy, kdy SQLite dělá automaticky převádět hodnoty kvůli typové příbuznosti (ve vašem případě by k tomu došlo, pokud byste deklarovali id
sloupec jako INTEGER
), ale to je poněkud kontraintuitivní, takže by se na to nemělo spoléhat.