Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将CreateFromAsset与房间数据库生成器一起使用_Android_Database_Sqlite_Retrofit_Android Room - Fatal编程技术网

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文件夹复制数据库

与重新启动应用程序不同,您应该:-

  • 删除应用程序的数据或
  • 卸载应用程序

然后运行应用程序。

这不是我的问题。我所说的重启就是这个意思。即使在删除或卸载后也不会发生任何事情。我将修改我的问题,使之更加明确。