2017-04-04 60 views
0

我使用GreenDAO库 我已经面临SQL例外,从旧版本的加密Android中现有的数据库升级后新 例: 1.0版:数据库未加密 2.0版本:数据库进行加密 使用1.0现有用户升级到2.0 我得到异常调用此之后,在此之前我必须在升级加密旧的数据库。这个怎么做?如何使用GreenDAO库

helper.getEncryptedWritableDb(password); 



net.sqlcipher.database.SQLiteException: file is encrypted or is not a database: , while compiling: select count(*) from sqlite_master; 
at net.sqlcipher.database.SQLiteCompiledSql.native_compile(Native Method) 
at net.sqlcipher.database.SQLiteCompiledSql.compile(SQLiteCompiledSql.java:91) 
at net.sqlcipher.database.SQLiteCompiledSql.<init>(SQLiteCompiledSql.java:64) 
at net.sqlcipher.database.SQLiteProgram.<init>(SQLiteProgram.java:84) 
at net.sqlcipher.database.SQLiteQuery.<init>(SQLiteQuery.java:49) 
at net.sqlcipher.database.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:42) 
at net.sqlcipher.database.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1820) 
at net.sqlcipher.database.SQLiteDatabase.rawQuery(SQLiteDatabase.java:1785) 
at net.sqlcipher.database.SQLiteDatabase.keyDatabase(SQLiteDatabase.java:2439) 
at net.sqlcipher.database.SQLiteDatabase.openDatabaseInternal(SQLiteDatabase.java:2368) 
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1149) 
at net.sqlcipher.database.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1041) 
at net.sqlcipher.database.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:249) 
at net.sqlcipher.database.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:214) 
at org.greenrobot.greendao.database.DatabaseOpenHelper.getEncryptedWritableDb(DatabaseOpenHelper.java:134) 
at org.broadsoft.iris.datamodel.db.DatabaseManager.openWritableDb(DatabaseManager.java:149) 
at org.broadsoft.iris.datamodel.db.DatabaseManager.openReadableDb(DatabaseManager.java:129) 
at org.broadsoft.iris.datamodel.db.DatabaseManager.getContactIdsInMessageHistory(DatabaseManager.java:461) 
at org.broadsoft.iris.http.HttpManagerV2.lambda$fetchVCards$2(HttpManagerV2.java:573) 
at org.broadsoft.iris.http.HttpManagerV2.access$lambda$2(HttpManagerV2.java) 
at org.broadsoft.iris.http.HttpManagerV2$$Lambda$3.run(Unknown Source) 
at java.lang.Thread.run(Thread.java:761) 

回答

0

从SQLite(未加密)到SQLCipher(加密)没有“升级”。这是一个轮廓如何做到这一点:

  1. 打开的SQLite数据库
  2. 打开SQLCipher DB不同的名称,以确保不同的DB文件从SQLite的使用
  3. 读取数据
  4. 将数据写入SQLCipher