如何在android中使用room加载db文件

如何在android中使用room加载db文件,android,sqlite,kotlin,android-room,Android,Sqlite,Kotlin,Android Room,我正在开发一个android应用程序。 我创建了一个“.db”文件 我想使用这个db文件作为我的android应用程序的数据库。 我正在用这个房间。 我试图找到解决办法,但找不到 @Database(entities = [Item::class], version = 1) @TypeConverters(ObjectConverter::class) abstract class MyDatabase : RoomDatabase() { abstract fun itemDao(

我正在开发一个android应用程序。 我创建了一个“.db”文件

我想使用这个db文件作为我的android应用程序的数据库。 我正在用这个房间。 我试图找到解决办法,但找不到

@Database(entities = [Item::class], version = 1)
@TypeConverters(ObjectConverter::class)
abstract class MyDatabase : RoomDatabase() {

    abstract fun itemDao(): ItemDao

    companion object {

        private const val DATABASE_NAME = "my.db"

        private var INSTANCE: MyDatabase? = null

        private val lock = Any()

        fun getInstance(context: Context): MyDatabase {
            synchronized(lock) {
                if (INSTANCE == null) {
                    initDatabase(context, DATABASE_NAME)
                    INSTANCE = Room.databaseBuilder(context.applicationContext,
                            MyDatabase::class.java, DATABASE_NAME)
                            .addCallback(object : Callback() {
                            })
                            .build()
                }
                return INSTANCE!!
            }
        }

        private fun initDatabase(context: Context, databaseName: String) {
            val dbPath = context.getDatabasePath(databaseName)
            if (dbPath.exists()) {
                return
            }

            dbPath.parentFile.mkdirs()
            val reader = BufferedReader(context.assets.open(databaseName).reader())
            val writer = FileWriter(dbPath)

            var line: String?
            do {
                line = reader.use { readLine() }
                if (line == null)
                    break

                writer.use { it.write(line) }
            } while (true)
            writer.flush()
        }
    }
}
我试着升级代码,但没用

  • 生成x.db文件
  • x.db
    文件放入
    assets/databases
    文件夹
  • 从下载文件
  • 将这些文件放入包
    sqlAssets
  • 在您的
    MyDatabase
    类中,按如下方式构建
    RoomDB

    Room.databaseBuilder(context.getApplicationContext(), MyDatabase.class, x.db")
    .openHelperFactory(new AssetSQLiteOpenHelperFactory())
    .allowMainThreadQueries()
    .build();
    

  • 附言:你在用科特林。这是Java代码。我还不认识Kotlin。

    我应该使用外部库吗?不是库。只有几个助手类。从我提供的链接下载。全部归功于那个家伙。:)