如何从房间数据库android Kotlin获取回调
我只想从房间数据库中获取行计数作为Int值, 不是来自初始化的如何从房间数据库android Kotlin获取回调,android,database,kotlin,Android,Database,Kotlin,我只想从房间数据库中获取行计数作为Int值, 不是来自初始化的LiveData,例如LiveData.value?.size Dao类 @Dao interface MyDao { @Query("SELECT COUNT(*) FROM User") fun getUserCount(): Int } class MyRepository(private val myDao: MyDao) { fun getUserCount() = myDao.get
LiveData
,例如LiveData.value?.size
Dao类
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
存储库类
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
视图模型类
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
这就是我想要的。但正如您所知,我们需要在后台线程而不是主线程访问房间数据库
所以我把代码改成
Dao类
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
存储库类
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
视图模型类
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = myRepository.getUserCount()
}
@Dao
interface MyDao {
@Query("SELECT COUNT(*) FROM User")
suspend fun getUserCount(): Int
}
class MyRepository(private val myDao: MyDao) {
suspend fun getUserCount() = myDao.getUserCount()
}
class MyViewModel(application: Application) : AndroidViewModel(application) {
fun getUserCount() = viewModelScope.launch {
myRepository.getUserCount()
}
}
如果行计数为1,如何获取“1”作为回调?使用计数
@Query("SELECT COUNT(column_name or primary key column name) from table_name ")
fun getCount(): Long
从存储库调用
getCount()
我不确定。但您可以将myRepository.getUserCount()的结果放入变量中,然后在当前启动中使用它来调用某些函数。Locat说“无法访问主线程上的数据库,因为它可能会长时间锁定UI。”在getCount
块中添加suspend
关键字,然后从launch
块调用