因此,当我第一次输入wearg密码后尝试使用正确的密码FlowManager.init(dbConfig)
时,如果我尝试重新打开,关闭或执行任何SQL操作{{1},它将抛出异常net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;
},FlowManager.getConfig().closeDB
。根据此thread
Android的SQLCipher不知道在sqlite3_key调用之后您提供的密码无效,因为直到在sqlite3_key之后对数据库发出SQL命令(例如setLocale(.. 。)方法。问题是,提供无效密钥可能只是其他可能发生的情况之一,在执行第一个SQL语句时可能是问题所在。数据文件损坏,HMAC检查失败或打开非数据库文件都可能导致此错误消息。有关此内容的详细说明,请查看此线程。尝试打开数据库并在客户端应用程序中进行相应处理时,最好捕获异常。
如果使用错误的密码初始化数据库后无法执行任何sql运算符,该怎么做才能再次检索访问权限?