2012-10-14 66 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';");