android-房间数据库未创建架构组件
我使用的是android架构组件和MVVM,我使用的是离线模式的房间,这是我建立连接的代码:android-房间数据库未创建架构组件,android,android-room,android-architecture-components,android-viewmodel,android-mvvm,Android,Android Room,Android Architecture Components,Android Viewmodel,Android Mvvm,我使用的是android架构组件和MVVM,我使用的是离线模式的房间,这是我建立连接的代码: @Database(entities = arrayOf(Cat::class), version = 1) abstract class DbConnection : RoomDatabase() { abstract fun CategoryDao(): CategoryDao companion object { private var INSTANCE: DbConne
@Database(entities = arrayOf(Cat::class), version = 1)
abstract class DbConnection : RoomDatabase() {
abstract fun CategoryDao(): CategoryDao
companion object {
private var INSTANCE: DbConnection? = null
fun getInstance(context: Context): DbConnection? {
if (INSTANCE == null) {
synchronized(DbConnection::class) {
INSTANCE = Room.databaseBuilder(
context.getApplicationContext(),
DbConnection::class.java, Const.db_Name
).build()
}
}
return INSTANCE
}
fun destroyInstance() {
INSTANCE = null
}
}
这是我的刀课:
@Dao
interface CategoryDao{
@Query("select * from $db_categoryTable")
fun getCatOffline():Single<List<Cat>>
@Insert(onConflict = REPLACE)
fun insert(cat:Cat)
}
@Dao
接口类别DAO{
@查询(“从$db\U类别表中选择*)
fun getCatOffline():单身
@插入(onConflict=REPLACE)
趣味插页(猫:猫)
}
这是我的猫课:
@Entity(tableName = Const.db_categoryTable)
data class Cat(
@PrimaryKey(autoGenerate = true)
@SerializedName("id")
@Expose
val id: Int,
val date_update: String,
val name: String,
val numCards: Int,
val uid: String
)
and this is my model class :
class CategoryModel(
private val netManager: NetManager,
private val sharedPrefManager: SharedPrefManager
) {
var dateChanges: String = "null";
private lateinit var categoryDao: CategoryDao
private lateinit var dbConnection: DbConnection
fun getCats(): MutableLiveData<MutableList<Cat>> {
dbConnection= DbConnection.getInstance(MyApp.INSTANCE)!!
categoryDao=dbConnection.CategoryDao()
if (netManager.isConnected!!) {
return getCatsOnline();
} else {
return getCatsOffline();
}
}
private fun getCatsOffline(): MutableLiveData<MutableList<Cat>> {
Log.v("this","offline ");
var list = MutableLiveData<MutableList<Cat>>();
categoryDao.getCatOffline()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{subccess->
list+=subccess
},{
error->
Log.v("This",error.localizedMessage)
}
)
return list
}
private fun getCatsOnline(): MutableLiveData<MutableList<Cat>> {
Log.v("this","online ");
var list: MutableLiveData<MutableList<Cat>> = MutableLiveData()
val getCats = ApiConnection.client.create(Category::class.java)
getCats.getCats(sharedPrefManager.getUid(), dateChanges)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ success ->
list += success.cats
}, { error ->
Log.v("this", "ErrorGetCats " + error.localizedMessage);
}
)
return list;
}
operator fun <T> MutableLiveData<MutableList<T>>.plusAssign(values: List<T>) {
val value = this.value ?: arrayListOf()
value.addAll(values)
this.value = value
}
}
@Entity(tableName=Const.db_categoryTable)
数据类Cat(
@PrimaryKey(自动生成=真)
@序列化名称(“id”)
@暴露
val id:Int,
val date_update:字符串,
val name:String,
val numCards:Int,
val-uid:String
)
这是我的模型课:
类分类模型(
专用val网络管理器:网络管理器,
私有val sharedPrefManager:sharedPrefManager
) {
var dateChanges:String=“null”;
私有lateinit变量categoryDao:categoryDao
私有lateinit var dbConnection:dbConnection
fun getCats():MutableLiveData{
dbConnection=dbConnection.getInstance(MyApp.INSTANCE)!!
categoryDao=dbConnection.categoryDao()
if(netManager.isConnected!!){
返回getCatsOnline();
}否则{
返回getCatsOffline();
}
}
private fun getCatsOffline():可变LiveData{
Log.v(“本”、“离线”);
var list=MutableLiveData();
categoryDao.getCatOffline()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(
{子进程->
列表+=子进程
},{
错误->
Log.v(“This”,error.localizedMessage)
}
)
返回列表
}
private fun getCatsOnline():MutableLiveData{
Log.v(“本次”、“在线”);
变量列表:MutableLiveData=MutableLiveData()
val getCats=ApiConnection.client.create(Category::class.java)
getCats.getCats(sharedPrefManager.getUid(),dateChanges)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(
{成功->
list+=success.cat
},{错误->
Log.v(“this”、“ErrorGetCats”+error.localizedMessage);
}
)
退货清单;
}
运算符fun MutableLiveData.plusSign(值:列表){
val value=this.value?:arrayListOf()
value.addAll(值)
this.value=value
}
}
如您所见,模型类有两个部分,当它连接到internet时,它将联机,否则将脱机
问题是,它创建了数据库,但当我下载和浏览它时,它没有任何表和内容,它只是一个空数据库,所以在脱机模式下它不会得到任何值
这个代码有什么问题 查看上面的代码,您似乎没有在房间中插入任何数据。您还应该在getCatsOnline()中的Room中插入数据,以便在访问Room时能够获取数据