应用更新时从SQLCipher V1迁移到Room DB V2:



我构建了两个具有相同包名的应用程序:

  1. 在第一个应用程序中,我使用"Pass_Phrase"(Version_1 DB)使用Java进行CRUD操作。
  2. 在第二个应用程序中,我只是想从SQLCipher迁移到Room (Version_2 DB),并且还从SQLCipher读取数据并使用Kotlin将其放入Room DB。

我完成了第一个应用程序,在第二个应用程序的迁移步骤中卡住了。需要您的帮助。非常感谢!

你可以使用一个Migration,它将Room数据库作为supportsqliteddatabase传递给它

那么你可以选择

打开
  • 原始(加密)数据库,然后像您所做的那样访问它,可能将数据卸载到游标中以加载到Room版本,或者
  • ATTACH将原始数据库(通过SupportSQLiteDatabaseexecSQL方法)复制到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应该花费很少的努力))

最新更新