Android 如何将CreateFromAsset与房间数据库生成器一起使用
我试图让这个新功能正常工作,但我一直得到一个空数据库。没有太多的文档,关于媒体的文章也不够详细 使用Android 如何将CreateFromAsset与房间数据库生成器一起使用,android,database,sqlite,retrofit,android-room,Android,Database,Sqlite,Retrofit,Android Room,我试图让这个新功能正常工作,但我一直得到一个空数据库。没有太多的文档,关于媒体的文章也不够详细 使用debugImplementation com.amitshekhar.android:debug db:1.0.6插件查看我的数据库并手动向其中添加条目 完成后,我下载了数据库 该文件本身不是*.db文件,但我更改了名称并放置了.db扩展名(我尝试了带和不带扩展名) 我将其添加到我的资产文件夹中,并在我的databasebuilder上添加一个带有路径的.createFromAsset,以便使用
debugImplementation com.amitshekhar.android:debug db:1.0.6
插件查看我的数据库并手动向其中添加条目
完成后,我下载了数据库
该文件本身不是*.db
文件,但我更改了名称并放置了.db
扩展名(我尝试了带和不带扩展名)
我将其添加到我的资产文件夹中,并在我的databasebuilder上添加一个带有路径的.createFromAsset
,以便使用数据库
重新启动应用程序(删除并重新安装)时,我发现它没有预先填充
我到底做错了什么
这就是我创建数据库的方式。没有什么特别的
single(createdAtStart = true) {
Room.databaseBuilder(
get(),
CountryDatabase::class.java,
"country_database"
).createFromAsset("database/country_database.db").build()
}
single(createdAtStart = true) {
get<CountryDatabase>().countryDao()
}
@Database(entities = [LocalCountryData::class], version = 4)
abstract class CountryDatabase : RoomDatabase() {
abstract fun countryDao(): CountryDao
}
@Entity(tableName = "countries")
data class LocalCountryData(
@PrimaryKey
val country_name: String,
val country_short_code: String,
val regions_name: String,
val regions_short_code: String
)
single(createdAtStart=true){
Room.databaseBuilder(
get(),
CountryDatabase::class.java,
“国家/地区数据库”
).createFromAsset(“database/country_database.db”).build()
}
单个(createdAtStart=true){
get().countryDao()
}
@数据库(实体=[LocalCountryData::class],版本=4)
抽象类CountryDatabase:RoomDatabase(){
抽象趣味countryDao():countryDao
}
@实体(tableName=“国家”)
数据类LocalCountryData(
@主键
val国家/地区名称:字符串,
val country_short_代码:字符串,
val区域名称:字符串,
val区域\u短\u代码:字符串
)
重新启动应用程序时,我发现它没有预先填充
createFromAssets将仅在没有现有数据库的情况下被调用,并从assets文件夹的database文件夹复制数据库
与重新启动应用程序不同,您应该:-
- 删除应用程序的数据或
- 卸载应用程序
然后运行应用程序。这不是我的问题。我所说的重启就是这个意思。即使在删除或卸载后也不会发生任何事情。我将修改我的问题,使之更加明确。