sql >> Databáze >  >> RDS >> SQLite

selectionArgs v SQLiteQueryBuilder nefunguje s celočíselnými hodnotami ve sloupcích

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.



  1. Konfigurace databázové pošty na serveru SQL

  2. Úplný seznam kolací podporovaných MariaDB

  3. Někdy MŮŽETE převést sloupec na místě

  4. ExecuteNonQuery vrací hodnotu -1 při použití sql COUNT navzdory řetězci dotazu