База данных Init не работает после первого неверного ввода пароля DBFlow
Поэтому, когда я пытаюсь 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 после инициализации базы данных с неверным паролем, что я должен сделать, чтобы снова получить доступ?