Ich versuche, eine Abfrage durchzuführen, um alle Objekte zu durchsuchen, deren Namen Text enthalten:
@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Mitteilungen:
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
Ich versuche auch:
@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Mitteilungen:
Error:Unused parameter: arg0
Wie kann ich das beheben?
android
kotlin
android-room
Denis Buzmakov
quelle
quelle
Sie können einfach mithilfe der SQLite-Zeichenfolgenverkettung konkatieren.
quelle
'%'
aber kann jemand erklären, was ist'||'
und warum?||
ist ein String-Verkettungsoperator. Stellen Sie es sich wie+
in Java String vor.Room unterstützt nur den Namen bind parameter : name , um Verwechslungen zwischen den Methodenparametern und den Abfragebindungsparametern zu vermeiden.
Room bindet die Parameter der Methode automatisch in die Bindungsargumente. Dazu wird der Name der Parameter mit dem Namen der Bindungsargumente abgeglichen.
quelle