根据SQLCipher官方网站的介绍,在“PRAGMA KEY ='testkey';”之后设置cipher_page_size。所以我创造我自己的DatabaseHelper如下:重置SQLCipher cipher_page_size导致打开数据库错误
public class DatabaseHelper extends SQLiteOpenHelper {
private final static String NEWDBNAME="my.db" ;
public DatabaseHelper(Context context){
super(context, NEWDBNAME, null, 0 ,new SQLiteDatabaseHook(){
@Override
public void postKey(SQLiteDatabase arg0) {
arg0.rawExecSQL("PRAGMA cipher_page_size = 4096");
}
@Override
public void preKey(SQLiteDatabase arg0) {
}});
}
public void onCreate(SQLiteDatabase db) { }
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }
public SQLiteDatabase getWritableDatabase()
{
return getWritableDatabase("encodestr");
}
}
问题就像是我的Android应用程序将得到一个错误:该文件不是一个分贝或者encripted ...
当我的意见:// arg0.rawExecSQL(“PRAGMA cipher_page_size = 4096”); ,它会运行良好。
有人知道这个问题吗?
谢谢。
您的数据库是否已经存在于设备/模拟器上? – 2014-09-25 18:21:51
是的,它的确如此。其实应用程序运行良好,而无需更改页面大小。我只是想优化速度。 – David 2014-09-25 21:34:07