我需要从一个数据库中的一列复制值,并将它们复制到另一个数据库中的另一个新创建的列。我能够使用自动迁移创建一个新列。但陷入了手动迁移的困境。 这是目录数据库类内部迁移的代码
val migration3To3 = object : Migration(3,4){
override fun migrate(database: SupportSQLiteDatabase) {
database.execSQL("ATTACH DATABASE 'Favorites.db' as 'fav")
database.execSQL("UPDATE 'Catalogues' SET 'favorite' = (SELECT 'favorite' FROM 'fav' WHERE Catalogues.code = fav.itemCode")
database.execSQL("DETACH DATABASE 'fav' ")
}
}
当 Catalouge 数据库中的“code”与收藏夹数据库中的“itemCode”相同时,需要发生这种情况。 SQL 命令对我来说似乎很好(我没有任何经验),但是当应用程序打开时数据库是空的。我在这里做错了什么?
附加时您需要指定数据库文件的路径而不仅仅是文件名。例如在房间迁移中访问旧房间数据库
这个简短的答案是从这个更冗长的答案中提取的,该答案更详细,还有替代方案Room - 使用外部 SQLites 以及内部 DB