1

在我的 android 应用程序中,我需要为用户提供创建加密或非加密数据库的选项;数据库将保存在设备 sdcard 中。

对于我正在使用的非加密数据库:-

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

我得到了我的答案。使用空字符串字符串作为密码确实会创建未加密的数据库。我的问题是我使用命令行来检查数据库;它不支持 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 回答