Android Room:如何在带参数的查询中正确使用LIKE?
大家好!我是Kotlin Android开发的新手,使用Room处理本地数据库。我有一个User实体,想通过SQL的LIKE操作符实现按姓名搜索用户。
这是我的DAO实体:
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE name LIKE '%:searchQuery%'")
suspend fun searchUsers(searchQuery: String): List<User>
}
我从ViewModel调用这个方法:
class UserViewModel(private val userDao: UserDao) : ViewModel() {
fun search(query: String) {
viewModelScope.launch {
val users = userDao.searchUsers(query)
// 处理结果
}
}
}
问题是查询没有返回任何结果,尽管数据库中有包含搜索字符串的姓名记录。我尝试过传递不同的值——完整姓名、部分字符串——但都没用。