J'essaie de faire une requête pour rechercher tous les objets dont les noms contiennent du texte:
@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Messages:
Error:no viable alternative at input 'SELECT * FROM hamster WHERE name LIKE %'
Error:There is a problem with the query: [SQLITE_ERROR] SQL error or missing database (near "%": syntax error)
Error:Unused parameter: arg0
J'essaye aussi:
@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Messages:
Error:Unused parameter: arg0
Comment régler ceci?
android
kotlin
android-room
Denis Buzmakov
la source
la source
Vous pouvez simplement concaténer en utilisant la concaténation de chaînes SQLite.
la source
'%'
mais quelqu'un peut-il expliquer ce que c'est'||'
et pourquoi?||
est l'opérateur de concaténation de chaîne. Pensez-y comme+
dans Java String.Room ne prend en charge que le paramètre de liaison nommé : nom pour éviter toute confusion entre les paramètres de méthode et les paramètres de liaison de requête.
Room liera automatiquement les paramètres de la méthode dans les arguments de liaison. Cela se fait en faisant correspondre le nom des paramètres au nom des arguments de liaison.
la source