3

sqlcipher で作成した暗号化データベースを PC で読み込もうとしていますが、アプリで読み込めません。例えば:

Cursor c = database.rawQuery("SELECT name FROM sqlite_master WHERE type='table'", null);
    c.moveToFirst();
    do {
        String s = c.getString(0);
        if (s.equals("android_metadata")) {
            // System.out.println("Get Metadata");
            continue;
        } else {
            dirArray.add(s);
        }
    } while (c.moveToNext());
    Log.i("getS", "DATABASE = " + dirArray.toString());
    Log.i("getS", "length = " + dirArray.size());

次の結果

03-12 03:28:12.691: I/getS(9895): DATABASE = []
03-12 03:28:12.691: I/getS(9895): length = 0

これも:

Cursor c2 = database.query("my_table", new String[] { "name" }, null, null, null, null, "name");

これに戻ります:

03-12 03:28:12.701: I/Database(9895): sqlite returned: error code = 1, msg = no such table: my_table

私は sdk-7 でコンパイルしています。同じデータベースを暗号化せずに sqlcipher なしで試しても、問題はありません。コンピューターで暗号化されたデータベースをアンドロイドで読み取る方法を誰か教えてもらえますか? 感謝 ;)

4

1 に答える 1

1

Android デバイスで sqlcipher データベースにアクセスして変更できるようにする SQLCipher for Android ライブラリを使用する必要があります。現在、Android 2.1 ~ 4.0.3 をサポートしています。バイナリのダウンロードは次の場所にあります。

https://github.com/sqlcipher/android-database-sqlcipher/downloads

Android 用の SQLCipher の反復処理に関するチュートリアルは、次の場所にあります。

http://sqlcipher.net/sqlcipher-for-android/

于 2012-03-13T13:19:41.443 に答える