在我的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/