Где получить информацию об ошибках базы данных в Android SQLite (например, неудачная вставка из-за нарушения не null)
Я только понял, что одна из моих команд insert() базы данных завершилась неудачно из-за нарушения неопределенного ограничения - я просто не заполнил данные в этом поле.
Проблема в том, что мне потребовалось много времени, чтобы узнать, почему эта вставка вернула -1, потому что я не смог найти ошибку или исключение где-нибудь.
Я бы ожидал, и я предполагаю, что для более сложных баз данных и запросов важно иметь некоторую информацию из базы данных, что действительно происходит, что приводит к сбою доступа к БД, но я не мог найти никакой информации об этом в любом месте.
Ответы
Ответ 1
Я обнаружил, что вместо insert вы можете использовать insertOrThrow(), по крайней мере, вы получаете исключение, когда что-то пойдет не так, говоря, что android.database.sqlite.SQLiteConstraintException: код ошибки 19: ограничение завершилось неудачно - хотя я действительно хотел бы/ожидаем, что он будет еще более ясным и скажет, какой столбец имеет ошибку или так, но, может быть, я слишком требователен к SQLIte feaures здесь.
Ответ 2
Вы посмотрели в LogCat? Как правило, довольно много подробностей о том, что происходит, чтобы включить то, что не так.
Ответ 3
Я обнаружил, что вместо insert вы можете использовать insertOrThrow(), по крайней мере, вы получаете исключение, когда что-то пойдет не так, говоря, что android.database.sqlite.SQLiteConstraintException: код ошибки 19: ограничение завершилось неудачно - хотя я действительно хотел бы/ожидаем, что он будет еще более ясным и скажет, какой столбец имеет ошибку или так, но, может быть, я слишком требователен к SQLIte feaures здесь.