在我的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创建非加密数据库?

最佳答案

我得到了答案。使用空字符串字符串作为密码会创建未加密的数据库。我的问题是我正在使用命令行检查db。它不支持sqlcipher.database,因此它始终以加密形式返回db。

我在eclpise中使用“拉”按钮从设备中拉出数据库,然后在Lita(用于查看数据库的软件)中将其打开。具有空密钥的数据库将打开,但具有非空密钥的数据库将告知该数据库已加密,因此无法打开。

关于android - net.sqlcipher.database.SQLiteDatabase未创建未加密的数据库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17466944/

10-12 02:32