J’essaie de faire une requête pour rechercher tous les objects dont les noms contiennent du texte:
@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%") fun loadHamsters(search: Ssortingng?): Flowable<List>
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
Aussi j’essaye:
@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'") fun loadHamsters(search: Ssortingng?): Flowable<List>
Messages:
Error:Unused parameter: arg0
Comment régler ceci?
Vous devez inclure les caractères %
dans votre requête d’entrée – pas dans la requête elle-même.
Par exemple, essayez ceci:
@Query("SELECT * FROM hamster WHERE name LIKE :arg0") fun loadHamsters(search: Ssortingng?): Flowable>
Ensuite, votre valeur de Ssortingng search
doit ressembler à ceci:
search = "%fido%"; loadHamsters(search);
De plus, le nom du paramètre de liaison doit correspondre au nom de la variable. Par conséquent, plutôt que arg0
il devrait ressembler à arg0
:
@Query("SELECT * FROM hamster WHERE name LIKE :search") fun loadHamsters(search: Ssortingng?): Flowable>
Vous pouvez simplement concaténer en utilisant la concaténation de chaînes SQLite.
@Query("SELECT * FROM hamster WHERE name LIKE '%' || :arg0 || '%'") fun loadHamsters(search: Ssortingng?): Flowable>