-1

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

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

  1. 创建和加密数据库。

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

  3. 删除旧数据库。

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

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

4

1 回答 1

0

我认为您正在搜索的是 sqlcipher_export 方法

它很容易将未加密的数据库复制到加密的数据库。在 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");
于 2018-03-15T16:42:16.630 回答