在 kotlin 房间迁移期间将列从一个表复制到另一个表

问题描述 投票:0回答:1

我需要从一个数据库中的一列复制值,并将它们复制到另一个数据库中的另一个新创建的列。我能够使用自动迁移创建一个新列。但陷入了手动迁移的困境。 这是目录数据库类内部迁移的代码

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 命令对我来说似乎很好(我没有任何经验),但是当应用程序打开时数据库是空的。我在这里做错了什么?

android sql kotlin android-room database-migration
1个回答
0
投票

附加时您需要指定数据库文件的路径而不仅仅是文件名。例如在房间迁移中访问旧房间数据库

这个简短的答案是从这个更冗长的答案中提取的,该答案更详细,还有替代方案Room - 使用外部 SQLites 以及内部 DB

© www.soinside.com 2019 - 2024. All rights reserved.