Работа с готовой базой данных SQLite под Android средствами Java

В предыдущей статье посвящённой работе с SQLite в Android приложениях на Java была рассмотрена, если её можно так назвать, «классическая» схема. Когда создаётся пустая база данных, которая впоследствии заполняется в коде программы.

Это вполне оправдано в случае небольших баз данных. Однако работать с крупными объёмами информации или данными сложной структуры таким способом неудобно. В подобных ситуациях имеет смысл создать и заполнить базу данных отдельно от приложения, а затем включить уже готовую базу данных в его состав, несмотря на то, что подобный подход более сложен в отношении реализации.

Способ использования готовой базы данных приведённый в данной статье является универсальным и не требует каких-либо сторонних библиотек и т.д., так как реализован на «чистом» Android SDK.

Важное замечание!

Если вы ранее не работали с SQLite под Android средствами Java, настоятельно рекомендуется вначале ознакомиться со статьёй «Работа с СУБД SQLite под Android на Java», где помимо упомянутой «классической» схемы подробно описаны основы работы с данной СУБД.

Создание базы данных

Создать базу данных можно в любой программе, которая предназначена для администрирования с баз данных СУБД SQLite.

При создании базы данных необходимо учитывать один нюанс.

В Android в базе данных SQLite должна обязательно присутствовать специальная таблица android_metadata. Эта таблица создаётся непосредственно Android и используется в служебных целях.

При работе с базой данных по «классической» схеме, данная таблица создаётся автоматически без участия разработчика. Если же речь идёт об использовании уже готовой базы данных, таблицу android_metadata необходимо создать самостоятельно.

Таблица android_metadata содержит одно единственное поле locale, которое имеет тип данных текст и значение по умолчанию «en_US».

После создания таблицы необходимо добавить в неё строку со значением по умолчанию.

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

Добавление базы данных в приложение

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

Для этого требуется создать в приложении системную папку assets (если её ещё нет) и поместить в неё файл базы данных.

Больше никаких действий выполнять не требуется. При сборке база данных будет автоматически включена в приложение.

Работа с базой данных в приложении

Для того чтобы в самом приложении можно было работать с присоединённой базой данных требуется выполнить ряд операций:

  1. Копирование файла базы данных из ресурсов приложения в системный каталог Android для баз данных;
  2. Реализовать подключение к базе данных и необходимые операции по работе с ней.

Важно отметить, что работа с готовой базой данных отличается от классической схемы только необходимостью копирования и реализацией подключения к базе данных. В остальном всё идентично.

1.Копирование файла базы данных и подключение к ней

Для доступа к базе данных создадим класс-хэлпер.

Вначале включим в него только необходимые константы, поля, конструктор и заглушки методов onCreate и OnUpgrade.

Назначение констант:

  • DB_PATH – путь к системному каталогу баз данных.
    Вместо «your_package_name» должно быть указано имя пакета приложения;
  • DB_NAME – имя файлы базы данных приложения.

Примечание автора от 02.03.2019

Приведённое значение DB_PATH актуально только для устаревших версий Android. В частности, исходные примеры для данной статьи были написаны под Android 4.2.2.

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

Несмотря на то, что методы onCreate и OnUpgrade. являются обязательными, при работе с готовой базой данных в их реализации нет необходимости. Потому в дальнейшем они так и останутся в виде заглушек.

Вся работа по копированию и подключению возлагается на пять методов:

  • createDataBase
    Проверка существования файла базы данных в системном каталоге и его копирование туда из ресурсов в случае отсутствия;
  • checkDataBase
    Собственно алгоритм проверки существования файла базы данных в системном каталоге;
  • copyDataBase
    Собственно алгоритм копирования файла базы данных в системный каталог;
  • openDataBase
    Подключение к базе данных;
  • close
    Закрытие подключения к базе данных.

Ниже представлен полный код класса-хэлпера со всеми пятью методами:

2.Инициализация базы данных в приложении

Инициализация базы данных состоит в создании при запуске приложения экземпляра класса-хэлпера и последующим вызовом его методов createDataBase и openDataBase с обработкой соответствующих исключений.

3.Работа с инициализированной базой данных

Работа с базой данных после её инициализации уже ничем не отличается от классической схемы.

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

Создадим перечисление с полями таблицы.

Создадим класс-репозиторий, который будет получать из этой таблицы данные.

После этого в приложении получим данные из таблицы и выведем их в ListView.

В результате данные из таблицы будут отображены на экране устройства.

Данные из таблицы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *