相关疑难解决方法(0)

Android:使用空间创建的SQLite数据库在使用sqlte-browser打开时不显示任何表

我正在使用Room Persistence Library 1.1.0.我可以/data/data/<package_name>/databases/使用Android Studio的Device File Explorer 找到数据库文件.它包含多个表,我可以使用room-DAOs 访问该表的内容而没有任何问题.但是打开时sqlite-browser,显示没有表格.

可能是什么原因?是否有可能解决这个问题,而无需切换回旧SQLiteOpenHelper/data/data/<package_name>/databases/

sqlite android sqlite-browser android-room sqlite-journal-mode

16
推荐指数
2
解决办法
4797
查看次数

通过Dagger 2提供RoomDatabase时,实现.addCallback()的正确方法是什么?

我正在使用Dagger 2在我的应用程序中创建和共享我的RoomDatabase.

我正在尝试实现addCallback(),因此我可以覆盖数据库的onCreate函数并使用它来插入我的初始数据库值.这是我遇到问题的地方.

我觉得我必须忽略一些显而易见的事情,但我无法找到一种方法来优雅地做到这一点.

RoomDatabase类:

@Database(
        entities = [Station::class],
        version = 1,
        exportSchema = false
)
abstract class TrainDB : RoomDatabase() {

    abstract fun stationDao() : StationDao

} 
Run Code Online (Sandbox Code Playgroud)

DAO:

@Dao
abstract class StationDao {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    abstract fun insert(stations: Station)

    @Query("SELECT * FROM station_table")
    abstract fun getAll() : LiveData<List<Station>>

}
Run Code Online (Sandbox Code Playgroud)

匕首模块:

@Module
class DataModule {

    @Singleton
    @Provides
    fun provideDb(app: Application): TrainDB {
        var trainDB: TrainDB? = null
        trainDB = Room
                .databaseBuilder(app, TrainDB::class.java, "train.db")
                .allowMainThreadQueries()
                .fallbackToDestructiveMigration()
                .addCallback(object : RoomDatabase.Callback() { …
Run Code Online (Sandbox Code Playgroud)

android kotlin dagger-2 android-room

8
推荐指数
2
解决办法
2391
查看次数