到目前为止,我一直在我的应用程序中使用未加密的数据库,现在我想使用SQLCipher将我的数据库迁移到加密数据库。这是我的情况。
对于下一个版本,我将更新数据库版本并执行脚本。对于要调用的onUpgrade(),我将调用geReadableDatabase()或getWriteableDatabase()。因此,当我要求任何操作()时,它将执行我的脚本,并将执行以下操作。
创建并加密数据库。
将数据从旧(未加密)数据库导出到加密数据库。
删除旧数据库。
因此,当我执行迁移时,我将暂停所有其他操作,直到迁移完成,然后将在加密数据库上执行暂停操作。
我不确定如何实现这一点,所以我应该采用什么方法来实现这一目标。
答案 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");