我构建了两个具有相同包名的应用程序:
- 在第一个应用程序中,我使用"Pass_Phrase"(Version_1 DB)使用
Java
进行CRUD操作。 - 在第二个应用程序中,我只是想从SQLCipher迁移到Room (Version_2 DB),并且还从SQLCipher读取数据并使用
Kotlin
将其放入Room DB。
我完成了第一个应用程序,在第二个应用程序的迁移步骤中卡住了。需要您的帮助。非常感谢!
你可以使用一个Migration,它将Room数据库作为supportsqliteddatabase传递给它
那么你可以选择
打开- 原始(加密)数据库,然后像您所做的那样访问它,可能将数据卸载到游标中以加载到Room版本,或者
ATTACH
将原始数据库(通过SupportSQLiteDatabase
的execSQL
方法)复制到Room数据库,然后使用SQL复制数据,最后DETACH
当附加数据库时,它的组件(如表)是可用的(您应该使用给定的schema_name来区分具有相同名称的组件)。见附上
- 注意,ATTACH SQL将沿着
ATTACH 'the_path_to_the_database' AS 'the_schema_name_to_use' KEY 'the_key'
行the_path_to_the_database
是要附加的数据库的路径the_schema_name_to_use
可以是一个有限制的任意值(不包括main或temp)。the_key
为秘钥
这里的答案包括一个使用第一个方法的示例(根据MainDatabase类,尽管在Java(转换为Kotlin应该花费很少的努力))