平滑迁移到加密数据库(SQLChiper)

时间:2018-02-27 12:31:43

标签: sqlite sqlcipher-android

到目前为止,我一直在我的应用程序中使用未加密的数据库,现在我想使用SQLCipher将我的数据库迁移到加密数据库。这是我的情况。

对于下一个版本,我将更新数据库版本并执行脚本。对于要调用的onUpgrade(),我将调用geReadableDatabase()或getWriteableDatabase()。因此,当我要求任何操作()时,它将执行我的脚本,并将执行以下操作。

  1. 创建并加密数据库。

  2. 将数据从旧(未加密)数据库导出到加密数据库。

  3. 删除旧数据库。

  4. 因此,当我执行迁移时,我将暂停所有其他操作,直到迁移完成,然后将在加密数据库上执行暂停操作。

    我不确定如何实现这一点,所以我应该采用什么方法来实现这一目标。

1 个答案:

答案 0 :(得分:0)

我认为你在寻找的是 sqlcipher_export method

它很容易将未加密的数据库复制到加密的数据库。在Android上你可能会做类似的事情:

unencryptedDb.rawExecSQL("ATTACH DATABASE 'secure_db_name.db' AS encrypted KEY 'testkey'");
unencryptedDb.rawExecSQL("SELECT sqlcipher_export('secure_db_name')");
unencryptedDb.rawExecSQL("DETACH DATABASE secure_db_name");