Как проверить согласованность файлов SQLite (проверка работоспособности) - PullRequest
2 голосов
/ 23 марта 2011

Я использую файл базы данных SQLite в своем приложении Android, который создается из нескольких частей, хранящихся в папке ресурсов, с использованием следующего подхода: ReignDesign - Использование собственной базы данных SQLite в приложениях Android

По завершении процесса сборки я хотел бы проверить, правильно ли объединена база данных.Мне в голову пришли следующие подходы:

  • Сравнение хэшей MD5
  • Проверка существования таблицы и количества записей

Какой подход вы бы порекомендовали?Есть ли лучший способ?

Спасибо,

Филипп

Ответы [ 4 ]

5 голосов
/ 23 марта 2011
4 голосов
/ 19 июня 2012

В Api 11 SQLiteDatabase имеет метод isDatabaseIntegrityOk для проверки целостности баз данных SQLite:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#isDatabaseIntegrityOk()

И исходный коддоступно здесь:

https://github.com/android/platform_frameworks_base/blob/ics-mr1-release/core/java/android/database/sqlite/SQLiteDatabase.java#L2585

Легко создавать бэкпорт на старых устройствах.

1 голос
/ 23 марта 2011

У меня была похожая ситуация в разрабатываемом приложении.Есть множество способов сделать это;но в конце я перестал беспокоиться о том, что именно и как лучше всего измерить целостность базы данных, и вместо этого сосредоточился на том, «может ли моя база данных использоваться моим приложением».

Так что в основном я проверяю: 1) могу ли я открытьБаза данных SQLite правильно 2) Я могу выполнять запросы к базе данных и 3) Возвращает ли результат для предварительно определенного запроса ожидаемое.

Итак, в основном: включите таблицу с записью известного идентификатора, которая даетзначение, которое вы знаете, затем попробуйте прочитать это значение.Проверка количества таблиц не может быть надежда.

Тем не менее, я надеюсь, что кто-то здесь с хорошим знанием систем БД объяснит а) что именно делает PRAGMA integrity_check и б) насколько это надежно и насколько эффективносравнивается с ручными проверками таблиц.

0 голосов
/ 23 марта 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...