Saya mencoba membuat kueri untuk mencari semua objek yang namanya berisi teks:
@Query("SELECT * FROM hamster WHERE name LIKE %:arg0%")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Pesan:
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
Juga saya mencoba:
@Query("SELECT * FROM hamster WHERE name LIKE '%:arg0%'")
fun loadHamsters(search: String?): Flowable<List<Hamster>>
Pesan:
Error:Unused parameter: arg0
Bagaimana cara mengatasinya?
android
kotlin
android-room
Denis Buzmakov
sumber
sumber
Anda bisa menggabungkannya menggunakan penggabungan string SQLite.
sumber
'%'
tetapi dapatkah seseorang menjelaskan apa itu'||'
dan mengapa?||
adalah operator rangkaian string. Anggap saja seperti+
di Java String.Room hanya mendukung parameter binding bernama : name untuk menghindari kebingungan antara parameter metode dan parameter bind kueri.
Room secara otomatis akan mengikat parameter metode ke dalam argumen bind. Ini dilakukan dengan mencocokkan nama parameter dengan nama argumen bind.
sumber