我正在开发一个android应用。 我创建了一个“ .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()
}
}
}
我试图上层代码,但是它不起作用。
答案 0 :(得分:0)
x.db
文件放入assets/databases
文件夹sqlAssets
在您的MyDatabase
类中,像这样构建RoomDB
:
Room.databaseBuilder(context.getApplicationContext(), MyDatabase.class, x.db")
.openHelperFactory(new AssetSQLiteOpenHelperFactory())
.allowMainThreadQueries()
.build();
P.S:您正在使用Kotlin。这是Java代码。我还不了解科特林。