sqlcipher中的数据库迁移
Database migration in sqlcipher
我使用 sqlcipher 3.* 来加密我的数据库。它工作得很好;但是现在我想迁移到新数据库(版本 2)。当我更改数据库版本时,打开数据库不起作用并且无法打开以前的数据库。
myDataBase = SQLiteDatabase.openOrCreateDatabase(DB_PATH,DB_PASS, null);
classSQLiteDatabase
这一行出现异常
this.dbopen(this.mPath, this.mFlags);
mFlags
不值。
第二个问题,数据库版本。总是 return 0 。
我当前的 sqlcipher 版本是 3.3.1-2,它是从 Maven
添加的。
我将 icudt46l.zip
添加到 assets
文件夹。
并将 commons-codec.jar
、 quava-r09.jar
和 sqlcipher-javadoc.jar
添加到 libs
文件夹。
谢谢
听起来好像没有设置数据库的版本。您可以使用 SQLiteDatabase
实例中的 setVersion(…)
和 getVersion()
手动执行此操作,或者如果您要对 SQLiteOpenHelper
进行子类化,则需要提供一个值。我们有一个 test 来验证 onUpgrade(…)
函数在版本号随着 SQLiteOpenHelper
子类发生变化时被调用。
我使用 sqlcipher 3.* 来加密我的数据库。它工作得很好;但是现在我想迁移到新数据库(版本 2)。当我更改数据库版本时,打开数据库不起作用并且无法打开以前的数据库。
myDataBase = SQLiteDatabase.openOrCreateDatabase(DB_PATH,DB_PASS, null);
classSQLiteDatabase
this.dbopen(this.mPath, this.mFlags);
mFlags
不值。
第二个问题,数据库版本。总是 return 0 。
我当前的 sqlcipher 版本是 3.3.1-2,它是从 Maven
添加的。
我将 icudt46l.zip
添加到 assets
文件夹。
并将 commons-codec.jar
、 quava-r09.jar
和 sqlcipher-javadoc.jar
添加到 libs
文件夹。
谢谢
听起来好像没有设置数据库的版本。您可以使用 SQLiteDatabase
实例中的 setVersion(…)
和 getVersion()
手动执行此操作,或者如果您要对 SQLiteOpenHelper
进行子类化,则需要提供一个值。我们有一个 test 来验证 onUpgrade(…)
函数在版本号随着 SQLiteOpenHelper
子类发生变化时被调用。