#android #sqlite
#Android #sqlite
Вопрос:
Я хочу прочитать записи из локальной базы данных и показать их в каком-то виде списка.
В случае отсутствия записей я показываю пустое состояние пользовательского интерфейса.
Мне интересно, нужно ли мне добавить пользовательский интерфейс состояния ошибки. Может ли локальная база данных быть недоступной или могут возникать ошибки чтения? (Ошибки программирования исключены — в этих случаях я хочу, чтобы приложение зависало, чтобы быстро узнать об этом.)
Уточнение: я мог бы упомянуть пользовательский интерфейс слишком много в моем вопросе. Меня интересует только то, какие ошибки базы данных могут возникать при чтении из локальной базы данных, которые не вызваны ошибками программирования.
Ответ №1:
ListView будет пустым, если источник ListView (курсор или массив) пуст (а не null, что приведет к исключению нулевого указателя). На самом деле в большинстве случаев ListView изначально будет пустым, поскольку вы обычно вызываете setContentView, который применяет макет, который обычно включает ListView (который на этом этапе не имеет адаптера и, следовательно, ничего не отображает). Затем вы получите ListView, настроите адаптер, а затем установите ListView с помощью адаптера, что приведет к отображению элементов (если таковые имеются).
База данных SQLite после создания довольно надежна, и вероятность ошибок чтения / записи довольно мала, и я уверен, что возникнет исключение.
Наиболее частые ошибки чтения, как таковые, возникают при копировании уже существующей базы данных, и обычно причиной является каталог, в который помещен файл базы данных, не существует.
- База данных создается вне приложения и обычно помещается в папку assets, затем ресурс (который доступен только для чтения, а также сжимается) копируется туда, где он будет полностью доступен (обычно в каталоге databases данных приложения (data / data / package_name / database / the_database_file)
Комментарии:
1. спасибо за ваш ответ. интересная часть для меня заключается в следующем: «База данных SQLite после создания довольно надежна, а вероятность ошибок чтения / записи довольно мала» Означает ли это, что вы будете ловить ошибки, но не прикладывать никаких усилий к дополнительному пользовательскому интерфейсу для этого сценария, но показывать пустой список?
2. @PeterF учитывая, что меня интересует только то, какие ошибки базы данных могут возникать при чтении из локальной базы данных, которые не вызваны ошибками программирования. тогда да. Это было бы редко, наиболее распространенным было бы повреждение файла БД, часто из-за плохого программирования. Это также может зависеть. Примером, в котором я бы перехватывал ошибки, является восстановление базы данных из резервной копии, и в этом случае код вернется к предварительной версии базы данных (никогда не было из-за ошибки чтения / записи, фактически приходилось принудительно проверять ошибку (для восстановления использовался файл, отличный от SQLiteиз)).