即使数据库中有数据,Room数据库查询也不会返回数据

时间:2019-08-22 00:31:57

标签: android sqlite kotlin android-room

我在DAO类中使用此方法来访问数据库中的数据:

@Query("select * from location_search_results WHERE searchQuery = :query")
fun searchForLocation(query: String): LiveData<LocationSearchResponse>

我这样称呼它:

locationResponse = locationResponseDao.searchForLocation(query)
Log.d("db", locationResponse.value.toString())

然后我观察到这样的值:

    fun bindUI() = launch {
        val locationResults = locationViewModel.locationResponse
        val owner = viewLifecycleOwner

        locationResults.observe(owner, Observer {
            if (it == null) return@Observer

            initRecyclerView(it.features.toLocationSearchResultListItem())
        })
    }

我的问题是,每当我这样做时,即使数据库中有与查询匹配的数据,观察者也总是返回null。我还尝试过使用select * from location_search_results来解决这个问题,以防searchQuery参数出现问题,但这又返回了null。

这是数据库的样子:

database

我是Room和SQLite的新手,所以非常感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

由于您要从会议室查询返回实时数据,因此应注意获取该值。 就像是 : locationResponseDao.searchForLocation(query).observeForever {响应-> locationResponse.value =响应

}