1

私の Android アプリでは、暗号化されたデータベースまたは暗号化されていないデータベースを作成するオプションをユーザーに提供する必要があります。データベースはデバイスの SD カードに保存されます。

私が使用している暗号化されていないデータベースの場合:-

db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, "", null);

しかし、コマンドラインからデータベースを開くと、エラーが発生します:ファイルは暗号化されているか、データベースではありません。したがって、上記のコード行は常に暗号化されたデータベースを作成します。

私のコードは以下の通りです:

if(db == null){
    try{
        SQLiteDatabase.loadLibs(context);
        String encryptStr = "";

        if(new File(DB_PATH + DB_NAME).exists()){
            db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, encryptStr, null);
        }else{

            db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, encryptStr,          null);
            executeSchema(context);
        }

        db.setVersion(1);
        db.setLocale(Locale.getDefault());
        db.setLockingEnabled(true);
    }catch(Exception e){
        db = null;
        AlertHelper.logError(e);
    }
}

Androidでsqlcipherを使用して暗号化されていないデータベースを作成する方法はありますか?.

4

2 に答える 2

1

私は答えを得ました。パスワードとして空の文字列 string を使用すると、暗号化されていないデータベースが作成されます。私の問題は、コマンドラインを使用してデータベースをチェックしていたことです。sqlcipher.database をサポートしていないため、常に db を暗号化して返しました。

eclpiseの「プル」ボタンを使用してデバイスからデータベースをプルし、Lita(データベースを表示するためのソフトウェア)で開きました。空のキーを持つデータベースが開きますが、空でないキーを使用すると、データベースが暗号化されているため開くことができないことがわかります。

于 2013-07-11T04:55:34.677 に答える
0

正しい方法を使用したと確信していますか?私は見つけることができませんでした

db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME, "", null);

方法、

私はこれらの方法を見ただけです:

SQLiteDatabase.openOrCreateDatabase(ファイル、ファクトリ)

SQLiteDatabase.openOrCreateDatabase(パス、ファクトリ)

SQLiteDatabase.openDatabase(パス、ファクトリ、フラグ)

于 2013-07-04T10:00:13.857 に答える