2

SQLCipher Web サイトの言及

"SQLiteDatabase.loadLibs(this) を使用して onCreate() でデータベースを初期化します; //最初にコンテキストで db ライブラリを初期化します"

  1. この loadlibs を最初のアクティビティで 1 回だけ呼び出しています (動作しているようです)。データベースにアクセスする可能性のあるすべてのアクティビティに対して、この関数を呼び出す必要がないようにしたいと考えています。これは正しいです?

  2. データベースのパスワードを変更するにはどうすればよいですか? キーの再生成を試みましたが、うまくいきません。古いパスワードが引き続き使用されます。

どんな助けでも大歓迎です。

ありがとうございました。

4

2 に答える 2

6
SQLiteDatabase.rawExecSQL("PRAGMA key = 'old_password';");
SQLiteDatabase.rawExecSQL("PRAGMA rekey = 'new_password';");
于 2014-10-10T05:57:45.550 に答える
4

はい、その通りですSQLiteDatabase.loadLibs(...);。Android用SQLCipherが実行時に使用するさまざまなネイティブライブラリをプロセスにロードする必要があるため、呼び出す必要があるのは1回だけです。パスワードを変更するには、最初にSQLiteDatabase、元のパスワードを提供したオブジェクトへの参照が必要です。それができたら、をPRAGMA rekey = 'some new password';使用して発行できますexecSQL(...);。キー再生成コマンドの詳細については、こちらをご覧ください

于 2012-10-16T12:47:36.123 に答える