База данных Init не работает после первого неверного ввода пароля DBFlow - PullRequest
0 голосов
/ 19 ноября 2018

Поэтому, когда я пытаюсь FlowManager.init(dbConfig) с правильным паролем после первого ввода пароля для работы, он выдает исключение net.sqlcipher.database.SQLiteException: file is not a database: , while compiling: select count(*) from sqlite_master;, если я пытаюсь открыть, закрыть или выполнить любую операцию sql FlowManager.getConfig().closeDB, FlowManager.getDatabase().isDatabaseIntegrityOk. По этой нити

SQLCipher для Android не знает, что введенный вами пароль недействителен после вызова sqlite3_key, так как ключ базы данных не используется, пока не будет введена команда SQL для базы данных, следующей за sqlite3_key, например setLocale (.. .) метод, на который вы ссылаетесь выше. Проблема в том, что предоставление неверного ключа может быть только одним из возможных других сценариев, которые могут быть проблемой в момент выполнения первого оператора SQL. Поврежденный файл данных, неудачная проверка HMAC или открытие файла без базы данных могут привести к тому же сообщению об ошибке. Для подробного описания этого, пожалуйста, просмотрите эту тему. Было бы лучше перехватить исключение при попытке открыть базу данных и соответственно обработать ее в клиентском приложении.

если я не могу выполнить какой-либо оператор sql после инициализации базы данных с неверным паролем, что мне следует сделать, чтобы снова получить доступ?

...