данные базы данных не полностью отображаются в мобильном телефоне при запуске - PullRequest
0 голосов
/ 26 октября 2018

Это будет длинный пост, но, пожалуйста, прочитайте до конца и помогите.Спасибо!

В продолжение моего предыдущего поста [ Android Studio - файл базы данных загружен в неверной кодировке: 'UTF-8' мое приложение работало нормально, когда я запускаю его на обоихмой телефон и эмулятор, несмотря на ошибку кодирования.

Однако сейчас я сталкиваюсь с новыми проблемами, и я хотел бы просто уточнить, почему.

Просто на голову, я использую DB Browser дляSQLite & Android Studio (3.2.1).Мой телефон - Samsung S7 Edge +, и я использовал эмулятор Pixel 2 XL API 28 (Android 9, API 28).

  1. Первая проблема заключается в том, что я добавил новые данные в свою базу данных, но этоне отображается, когда я запускаю его на своем телефоне.См. Прикрепленный файл для ссылки на новые данные, добавленные «database - Knowledge.db».Я также удостоверился, что данные обновляются, щелкая вкладку «Запись изменений».После этого, чтобы импортировать базу данных в Android Studio, мне нужно создать папку активов базы данных и сохранить в ней мой файл Knowledge.db.Я так и сделал.Однако, когда я запускаю свое приложение на телефоне, оно не отображает обновленные данные при прокрутке вниз, см. Прикрепленный фактический телефон actual phone.Но когда я запускаю его на эмуляторе, обновленные данные отображаются на эмуляторе телефона

phone emulator.Новые данные называются «IIDS», «FIDS» и «GMID».Обратите внимание на скриншоты двух телефонов, реальные скриншоты телефона остановились в «Пассажирском терминале», и после прокрутки вниз новые данные не отображаются, но на эмуляторе телефона отображаются новые данные.

Сначала я думал, что это можетЭто проблема размера, поэтому я соответственно уменьшил размеры текста, но проблема осталась.Я не могу думать о других возможных причинах.

Во-вторых, я знаю, что обновил базу данных в браузере БД, щелкнув «Записать изменения», потому что, когда я снова открываю ее, меняются новые данные и имена.Но когда я импортирую его в Android Studio, он не обновляется полностью.Смотрите прикрепленный и обведенный кружком для справки.Различия differences

Как таковой, кто-нибудь знает, что может вызвать эту проблему и как я могу ее исправить?Любая помощь с благодарностью!

1 Ответ

0 голосов
/ 26 октября 2018

Первоначальная проблема возникла из-за того, что база данных уже существовала, и, таким образом, копирование из папки ресурсов было / не было выполнено.

Удаление базы данных (удаление данных приложения или удаление приложения) приведет кзатем база данных копируется из папки активов.

Однако вы столкнулись с проблемой с номером версии.Я полагаю, что это произошло потому, что приложение было изменено для использования базы данных версии 2 (фактически с точки зрения SQLite user_version).Таким образом, поскольку версия не равна 1 (я подозреваю, что если она равна 1, проверка версии не выполняется, поэтому даже не имея версии (как было в комментариях)), была предпринята попытка проверить версию БД, что привело кисключение нулевого указателя, поскольку не было задано user_version (возможно, ошибка).

В основном вы не хотите менять версию БД с 1, если вы (при разработке приложения) повторно вводите измененноебаза данных, которая копируется из папки активов. В качестве альтернативы вам нужно установить соответствующую версию, используя PRAGMA user_version=? (где? номер версии) в базе данных, используя любой инструмент, который вы используете, прежде чем копировать базу данных в папку активов.

Единственная причина, по которой вы бы увеличили версию базы данных (для Android), - это когда вы хотите запустить метод onUpgrade.

  • Примечаниебыли сделаны предположения о повторной проверке номера версии.

  • Если вы выпустили приложение, оно может быть гораздо сложнееразвернуть измененную базу данных как актив.

...