SqlCipher尝试编写只读数据库

时间:2014-07-12 22:28:48

标签: java android sqlite sqlcipher

我正在尝试为Android实现Sqlcipher。我正在将它用于多个活动,因此我正在扩展SQLiteOpenHelper {}。

但是我

我知道在第一次访问数据库之前不会调用OnCreate覆盖方法。

我的oncreate方法看起来像

@Override
public void onCreate(SQLiteDatabase db) {
    SQLiteDatabase.loadLibs(context);


    File databaseFile = context.getDatabasePath("SyncableDiabetesDatabase.db");
    databaseFile.mkdirs();
    databaseFile.delete();
    mDataBase = SQLiteDatabase.openOrCreateDatabase(databaseFile,SuperKey, null);

我试图通过调用this.getWritableDatabase(SuperKey)来获取OnCreate方法来调用此方法;但是,当我运行此命令时,我收到错误

net.sqlcipher.database.SQLiteException:尝试编写只读数据库:PRAGMA user_version = 1

我不确定这是怎么可能的,因为命令是针对可写DB

我知道sqlcipher已正确安装,因为我可以将数据库创建代码放在OnCreate之外,并且数据存储正确。但是,每次调用活动时都会覆盖文件,因此我将其移动到OnCreate,而OnCreate仅在创建表时调用一次。

这里的任何见解都非常受欢迎。

如果需要,我可以提供任何额外的代码snippits。

谢谢

1 个答案:

答案 0 :(得分:0)

您无需在SQLiteDatabase.openOrCreateDatabase的{​​{1}}方法中调用onCreate,数据库实例已作为参数提供给函数。可以找到使用SQLiteOpenHelper的示例here