如何在Android上用sqlcipher读取以前在PC上创建的加密数据库?

时间:2012-03-13 00:51:17

标签: android sqlcipher

我正在尝试在我的电脑上读取使用sqlcipher创建的加密数据库但我无法在我的应用上阅读它。例如:

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,我没有任何问题。 任何人都可以教我如何在Android上读取在我的计算机上加密的数据库? 欣赏;)

1 个答案:

答案 0 :(得分:1)

您将需要使用SQLCipher for Android库,它允许您访问和修改Android设备上的sqlcipher数据库。我们目前支持Android 2.1 - 4.0.3。二进制下载可以在这里找到:

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

可以在此处找到有关迭代SQLCipher for Android的教程:

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