2012-10-14 65 views
2

SQLCipher网站提到SQLCipher Loadlibs和db密码更改

“使用SQLiteDatabase.loadLibs中的onCreate()初始化数据库(本); //初始化第一与上下文的DB库”

  1. 我在我的第一个活动中只调用一次loadlibs(似乎正在工作)。我想确保我不需要为可能访问数据库的每个活动调用此函数。它是否正确?

  2. 如何更改数据库密码?我试过重新键,但这不起作用。它仍然需要旧密码。

任何帮助,将不胜感激。

谢谢。

回答

3

是的,这是正确的 - 您只需要调用SQLiteDatabase.loadLibs(...);一次,因为它负责将Android在运行时使用的各种本机库SQLCipher加载到进程中。要更改密码,您必须首先参考已提供原始密码的SQLiteDatabase对象。一旦你有,你可以使用execSQL(...);发出PRAGMA rekey = 'some new password';。有关rekey命令的更多信息可以在here找到。

+0

是否有任何情况会导致多次调用SQLiteDatabase.loadLibs? – Michael

4
SQLiteDatabase.rawExecSQL("PRAGMA key = 'old_password';"); 
SQLiteDatabase.rawExecSQL("PRAGMA rekey = 'new_password';");