在我的Android应用程序中,我需要为用户提供创建加密或非加密数据库的选项;数据库将保存在设备SD卡中。
对于我正在使用的非加密数据库: -
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创建非加密数据库的方法吗?
答案 0 :(得分:1)
我得到了答案。使用空字符串作为密码会创建未加密的数据库。我的问题是我使用命令行检查数据库;它不支持sqlcipher.database,因此它始终将db作为加密方式返回。
我使用eclpise中的“pull”按钮从设备中取出数据库,然后在Lita(用于查看数据库的软件)中打开它。带空键的数据库打开,但是非空键表示数据库已加密,因此无法打开。
答案 1 :(得分:0)
db = SQLiteDatabase.openOrCreateDatabase(DB_PATH + DB_NAME,“”,null);
方法,
我只看到这些方法:
SQLiteDatabase.openOrCreateDatabase(文件,工厂)
SQLiteDatabase.openOrCreateDatabase(路径,工厂)
SQLiteDatabase.openDatabase(路径,工厂,标志)