- Использование простой базы данных SQLite в Android-приложении
- Что такое SQLite
- Подготовка
- Описание примера приложения
- Классы хранения базы данных SQLite
- Определение таблиц
- Создание базы данных с помощью SQLiteOpenHelper
- Выбор данных из базы данных SQLite
- Отображение содержимого объекта Cursor в RecyclerView
- Определение внешних ключей
- Обновление SQLiteOpenHelper
- Отображение данных из запроса SQLite в Spinner
- Вставка внешнего ключа в базу данных
- Выборка данных из базы SQLite с помощью JOIN
- В заключении
- Mobi DB — Manage Databases: создание, хранение и управление базами данных
Использование простой базы данных SQLite в Android-приложении
В этом руководстве я подробно расскажу о том, как использовать базу данных Android SQLite .
Что такое SQLite
SQLite — это система управления реляционными базами данных, похожая на Oracle , MySQL , PostgreSQL и SQL Server . Она реализует большую часть стандарта SQL , но в отличие от четырех упомянутых выше СУБД она не поддерживает модель « клиент-сервер ». Скорее, она встроена в конечную программу. Это означает, что можно связать базу данных SQLite с приложением и получить доступ ко всем возможностям БД в своем приложении.
Данная СУБД совместима как с Android , так и с iOS , и каждое приложение может создавать и использовать базу данных SQLite . В Android контакты и медиа хранятся и ссылаются на БД SQLite . Она является наиболее используемой СУБД в мире и самым распространенным программным обеспечением . Чтобы узнать о базах данных SQLite как можно больше, посетите официальный сайт SQLite .
Подготовка
Чтобы включить привязку данных в приложении, нужно добавить в файл build.gradle следующий код:
Чтобы использовать как RecyclerView , так и CardView для отображения списков, нужно включить соответствующие библиотеки в разделе зависимостей в файле build.gradle :
Чтобы задействовать все возможности базы данных SQLite , лучше изучить синтаксис SQL .
Описание примера приложения
В нашем Android SQLite примере мы создадим две таблицы: Employer и Employee . Таблица Employee будет содержать ссылку на внешний ключ таблицы Employer . Мы рассмотрим, как вставлять, выбирать, обновлять и удалять строки из таблиц. Я также продемонстрирую, как вывести элементы, выбранные из базы данных SQLite в RecyclerView ( список ) и в Spinner .
У нас есть MainActivity , из которого можно перейти к EmployerActivity ( для работы с таблицей Employer ) или к EmployeeActivity ( для работы с таблицей Employee ):
Классы хранения базы данных SQLite
Классы определяют то, как данные хранятся в базе. SQLite сохраняют значения с помощью пяти доступных классов хранения:
- NULL — нулевое значение;
- INTEGER — для целых чисел, содержащих от 1 до 8 байтов;
- REAL — числа с плавающей запятой;
- TEXT — текстовые строки, хранящиеся с использованием кодировки базы данных ( UTF-8 или UTF-16 );
- BLOB — двоичные данные, хранящиеся точно так, как они были введены.
Определение таблиц
Поскольку база данных SQLite является локальной, нужно обеспечить, чтобы приложение создавало таблицы и по мере необходимости сбрасывало их.
Начнем с Android SQLite query создания таблицы Employer , а затем перейдем к EmployerActivity .
Рекомендуется размещать логику создания базы х SQLite в классе. Это облегчает устранение возможных неполадок. Назовем наш класс SampleDBContract :
Мы определяем частный конструктор для SampleDBContract , а затем создаем класс для представления таблицы Employer . Обратите внимание: класс Employer реализует интерфейс BaseColumns . Он предоставляет два столбца в нашей таблице. Это столбец _ID , который будет автоматически увеличиваться при добавлении каждой новой строки. И столбец _COUNT , который может использоваться ContentProviders для возврата количества записей, извлекаемых через запрос. Столбец _COUNT не является обязательным. Строка CREATE_TABLE компилируется в следующий оператор SQL :
На данный момент в нашем Android SQLite примере мы определили схему таблицы Employer .
Создание базы данных с помощью SQLiteOpenHelper
Самый простой способ управления созданием базы данных и версиями — создать подкласс SQLiteOpenHelper . Он упрощает управление базой данных SQLite , создавая БД, если они не существуют. Необходимо только переопределить методы onCreate() и onUpgrade() , чтобы указать нужное действие для создания или обновления базы данных:
Теперь в нашем примере Android database SQLite задаем для нашей базы данных SQLite имя ( sample_database ). Конструктор вызывает конструктор суперкласса с именем и версией базы данных. В onCreate мы указываем объекту SQLiteDatabase выполнить оператор Employer CREATE_TABLE SQL . Через onUpgrade мы сбрасываем таблицу Employer и создаем ее снова:
Таблица Employer имеет три столбца: name , description и founded_date . Нажатие кнопки сохранения вызывает метод saveToDB() :
В saveToDB() мы получаем ссылку на объект SQLiteDatabase , используя метод getWritableDatabase() из SQLiteOpenHelper . Этот метод создает базу данных, если она еще не существует, или открывает ее, если она уже создана. GetWritableDatabase возвращает объект SQLiteDatabase , который открывает доступ на чтение / запись:
В приведенном выше фрагменте кода есть четыре момента:
- Мы получаем объект SQLiteDatabase , который открывает доступ на запись в базу данных;
- Значения, которые будут храниться в базе данных, помещаются в объект ContentValue с именем столбца в качестве ключа;
- Мы помещаем Date в объект ContentValue , который переводится в класс хранения данных Android SQLite INTEGER ;
- При вставке строки в базу данных с помощью метода database.insert() возвращается идентификатор строки.
Выбор данных из базы данных SQLite
Подобно тому, как мы применили метод getWritableDatabase() , можно вызвать getReadableDatabase() объекта SQLiteOpenHelper для получения объекта SQLiteDatabase , который можно использовать для чтения информации из базы данных. Стоит отметить, что объект SQLiteDatabase , возвращаемый getReadableDatabase() , предоставляет собой тот же самый доступ на чтение / запись в базу данных, который был возвращен функцией getWritableDatabase() , за исключением тех случаев, когда существуют определенные ограничения. Например, файловая система, содержащая заполненную базу данных, и база данных может быть открыта только для чтения.
Метод readFromDB будет запрашивать БД, и возвращать все строки из таблицы Employer , в которых имя или описание из таблицы Employer совпадает со значением, введенным в EditText . А также строки, в которых дата основания компании совпадает со значением, введенным в EditText :
В коде Android SQLite query , приведенного выше, projection является массивом String , представляющим столбцы, которые мы хотим получить. selection является строковым представлением условия SQL WHERE , отформатированным таким образом, что символ ‘?’ будет заменен аргументами в массиве selectionArgs String . Вы также можете группировать, фильтровать и сортировать результаты запроса. Вставка данных в базу SQLite с использованием описанного выше метода защищает от SQL-инъекций .
Обратите внимание на объект, возвращаемый запросом — Cursor . В следующем разделе мы покажем, как вывести содержимое Cursor с помощью RecyclerView .
Отображение содержимого объекта Cursor в RecyclerView
Cursor предоставляет произвольный доступ к набору результатов, возвращаемому запросом к базе данных. Это означает, что через Cursor можно получить доступ к значениям в любом месте, подобно Java-спискам или массивам. Благодаря этому приему можно реализовать RecyclerView с использованием Cursor так же, как мы реализуем RecyclerView с помощью ArrayLists . Вместо вызова List.get(i) , вы перемещаете Cursor в нужную позицию, используя moveToPosition() . После этого вызываете соответствующий метод getXXX(int columnIndex) , где XXX — это Blob , Double , Float , Int , Long , Short или String .
Чтобы не беспокоиться о корректных индексах столбцов из метода readFromDB() , примененного выше, мы используем метод getColumnIndexOrThrow() , который извлекает индекс указанного столбца или генерирует исключение, если имя столбца не существует внутри объекта Cursor :
Определение внешних ключей
На данный момент в нашем Android SQLite примере мы создали таблицу Employer , которую заполнили строками. Теперь создадим таблицу Employee , которая связана с таблицей Employer через столбец _ID Employer . Мы определяем класс Employee , который расширяет BaseColumns в классе SampleDBContract . Обратите внимание, что при создании таблицы Employee использовали « FOREIGN KEY(employer_id) REFERENCES employer(_id) «:
Обновление SQLiteOpenHelper
На данный момент в Android Studio SQLite у вас должна быть создана таблица Employer и в нее добавлены значения. Если вы не изменяете версию базы данных, новая таблица Employee не будет создана. К сожалению, если вы измените версию через повторный вызов метода onUpgrade() , то таблица Employer будет сброшена. Чтобы предотвратить это, можно закомментировать или удалить оператор drop в методе onUpgrade() и добавить оператор execSQL() для создания таблицы Employee . Поскольку таблица Employee ссылается на таблицу Employer , сначала необходимо создать таблицу Employer :
Отображение данных из запроса SQLite в Spinner
Чтобы создать работника в таблице Employee , пользователю необходимо выбрать соответствующего работодателя в таблице Employer . Для этого можно предоставить пользователю Spinner . Отобразить содержимое Cursor в Spinner довольно просто.
Сначала мы выполняем Android SQLite query , как было описано выше, выбираем только name из Employer и id (queryCols) . Затем создаем экземпляр SimpleCursorAdapter , передавая ему Cursor , массив столбцов для отображения ( adapterCols ) и массив представлений, с помощью которых должны отображаться столбцы ( adapterRowViews ). Затем устанавливаем Spinner Adapter для SimpleCursorAdapter :
Вставка внешнего ключа в базу данных
Вставка строки, содержащей внешний ключ, полностью идентична вставке строк в таблицу без ограничений по внешнему ключу. Разница заключается в том, что в Android SQLite примере мы получаем ссылку на выбранный объект Cursor из Spinner , а затем — значение столбца _ID Employer :
Выборка данных из базы SQLite с помощью JOIN
Нельзя использовать метод SQLiteDatabase query() для выполнения запроса к нескольким таблицам. Для этого нужно составить собственный SQL-запрос . В приведенном ниже примере запрос определяется в классе SampleDBContract :
Обратите внимание, что в условии WHERE мы используем символ « ? ». Чтобы не нарушить синтаксис SQL нужно определить selectArgs String [] со значениями, которые будут заменять в предоставленном SQL-запросе символ « ? »:
В заключении
Полная версия исходного кода доступна на github для использования и изменения. Базы данных Android SQLite — это мощное средство, доступное для всех мобильных приложений.
Дайте знать, что вы думаете по этой теме статьи в комментариях. Мы крайне благодарны вам за ваши комментарии, лайки, подписки, дизлайки, отклики!
Дайте знать, что вы думаете по данной теме в комментариях. За комментарии, отклики, подписки, лайки, дизлайки низкий вам поклон!
Источник
Mobi DB — Manage Databases: создание, хранение и управление базами данных
Создавать и управлять персональными базами данных непосредственно с устройства на базе Android поможет Mobi DB — Manage Databases. Средой постоянного хранения пользовательских баз данных (БД), созданных в Mobi DB — Manage Databases, является внутренняя память или SD-карта гаджета, благодаря чему информация будет доступна в любое время и в любом месте, независимо от наличия подключения к интернету. Полноценные клиентские БД для вашего бизнеса или CD/DVD коллекции, книги, рецепты, списки покупок, расходы — Mobi DB поможет создать, управлять и хранить любые базы данных.
Платформа: Android
Версия: 1.0.1.3
Русский интерфейс: Нет
Требования: 4.0 или более поздняя
Категория: Бизнес
Стоимость: Lite-версия – бесплатно, pro-версия – 365 рублей
Дизайн и интерфейс
Первое, на что нужно обратить внимание — приложение не русифицировано. Пользователю, не владеющему английским языком, придётся запастись терпением, чтобы разобраться, что тут к чему. Помогут в этом примеры баз данных, которые СУБД предложит загрузить при первом запуске. Образцы наглядно демонстрируют возможности приложения. Это единственная инструкция, которой не стоит пренебрегать. В дальнейшем примеры можно легко удалить или отредактировать.
Также спасает ситуацию интуитивный интерфейс, благодаря которому преодолеть языковой барьер будет проще. Пользоваться Mobi DB удобно не только на планшете, но и на смартфоне. На главном экране расположены ярлыки всех имеющихся на устройстве баз данных. Таким образом, переход к каждой из них осуществляется буквально в один клик. Приложение поддерживает как портретную, так и альбомную ориентацию. Программа довольно требовательна к ресурсам. Во время составления и редактирования баз данных заряд аккумулятора тает на глазах. Во время тестирования смартфон несколько раз подвисал, но в общем-то Mobi DB работает стабильно. Все БД хранятся на SD-карте, само приложение в системной памяти занимает меньше двух мегабайт.
Несмотря на то, что приложение не русифицировано, кириллические символы поддерживаются и отображаются корректно, поэтому переименовать встроенные БД и любые поля в них не составит особого труда.
Шаблоны
На главном экране приложения имеется кнопка «+», открывающая доступ к предустановленным шаблонам. Их в приложении 19, такой набор впечатляет. К сожалению, и здесь перевод отсутствует, а переименовать их нельзя. Каждый шаблон состоит из определенного набора полей, этот набор, как и названия полей, можно редактировать, что открывает возможность для создания фактически неограниченного количества персональных баз данных.
- Blank/ Бланк – позволяет создать собственный шаблон из имеющегося набора полей;
- Books / Книги;
- СD;
- Class Schedule / Расписание занятий;
- DVD;
- Employees / Сотрудники;
- Expenses / Расходы;
- Movies / Фильмы;
- Orders / Заказы;
- Purchases / Покупки;
- Recipes / Рецепты;
- Salary / Зарплата;
- Sales / Распродажи;
- Shopping list / Список покупок;
- Software / Программное обеспечение;
- Summer Camp / Летний лагерь;
- Tasks / Задачи;
- Vehicle Maintenance / Техническое обслуживание;
- Wine / Вино.
Пользоваться готовыми шаблонами очень удобно, так как они легко редактируются. А вот заполнять поля приходится чаще всего вручную. Например, чтобы добавить обложку к фильму видеотеки, нужно выйти из приложения и скачать её через браузер, заодно узнав всю нужную информацию (дату релиза, актёрский состав и т.д.). Это затрудняет составление БД, тем более, что большинство пользователей уже избаловано возможностью загружать нужную информацию прямо из приложения, которая реализована во многих плеерах.
Базы данных
Представим, что у нас небольшой питомник растений, которые мы продаём. Создадим клиентскую базу данных. Для этого можно использовать предустановленный шаблон, например, Orders / Заказы, а можно создать собственный. Мы выбрали второй вариант, так как набор полей в имеющемся шаблоне не вполне совпадает с нашими нуждами. Нажимаем кнопку «+» на главном и экране и выбираем Blank / Бланк. Программа предложит ввести название БД. После этого открывается визуальный редактор приложения во вкладке «Design».
Для создания полей БД снова нажимаем кнопку «+» — «добавить», открывается список предустановленных в приложении полей. Mobi DB имеет 14 типов полей, которые могут использоваться неограниченное количество раз.
- Text / Текст;
- Decimal number / Десятичное число;
- Integer number / Целое число;
- Checkbox / Кнопка-галочка;
- Date / Дата;
- Time / Время;
- Hyperlink / Гиперссылка;
- Email;
- Phone / Номер телефона;
- Picture / Изображение;
- Rating / Рейтинг;
- Address / Адрес;
- Currency / Валюта;
- Calculated / Расчёт.
С помощью визуального редактора можно менять последовательность полей, их размер, название и описание. Изменения в шаблон вносятся на любом этапе. Пользователю не придётся вбивать всю информацию заново: если нужно добавить дополнительные ячейки, достаточно вставить новое поле в одну из карточек, и оно появится во всей БД — шаблон меняется автоматически.
После создания шаблона можно приступать к заполнению карточек БД. В нашей базе данных мы использовали не все типы полей, имеющиеся в приложении. Некоторые использовали один раз, а такие, как Text / Текст, Checkbox / Кнопка-галочка использовали несколько раз. Таким образом, Mobi DB даёт полную свободу в составлении персональных баз данных — это безусловный козырь приложения.
После того, как шаблон БД создан, остаётся просто заполнить карточки заказа, что существенно сэкономит время обработки, позволяя оптимизировать бизнес-процессы. Единственный инструмент, которым нам так и не удалось воспользоваться, это Calculated / Расчёт. Сколько мы ни пытались вставить его в наш шаблон, приложение неизменно выдавало ошибку. Разработчики обещают в ближайших обновлениях исправить этот баг.
Ещё одно преимущество Mobi BD — её интеграция с меню телефона и почтовыми приложениями, установленными в смартфоне. Позвонить и написать письмо, можно просто кликнув на соответствующее поле в БД, что очень удобно.
А вот отредактировать на компьютере созданную с помощью Mobi DB базу данных не получится, так как отсутствует клиент приложения для PC. Приложение поддерживает только внутренний Импорт/ Экспорт. Экспорт в формат CSV, поддерживаемый многими офисными программами на ПК, разработчики планируют реализовать в будущем.
Резюме
Mobi DB — Manage Databases позволяет использовать Android-устройства не только для хранения, но и для управления базами данных как в личных, так и в профессиональных целях. Мощный визуальный редактор, возможность создавать собственные шаблоны персональных БД с помощью многочисленных инструментов, реализованных в приложении, делают эту СУБД интересным предложением. Интеграция с электронной почтой и телефоном значительно расширяет способы применения приложения. К сожалению, технические недоработки смазывают впечатление от работы с приложением. Отметим, что это первая версия СУБД, и обновления, исправляющие баги программы, выходят регулярно. Приятно, что создатели Mobi DB предусмотрели возможность протестировать свой продукт. Lite-версия доступна бесплатно, благодаря этому каждый может самостоятельно оценить функционал приложения и принять решение о покупке полной версии.
Плюсы:
- многообразие шаблонов (возможность хранить базы данных разных типов);
- визуальный реактор шаблонов;
- количество полей в шаблоне не ограничено;
- сортировка информации БД по любому принципу и любой графе;
- экспорт/импорт БД (в собственном формате);
- поддержка кириллицы.
Минусы:
- нерусифицированное меню;
- отсутствует возможность экспорта / импорта БД в известных форматах (планируется поддержка CSV);
- отсутствует клиент для PC;
- ручной ввод всех данных.
Mobi DB Lite — Базы данных
Mobi DB – это программа для хранения всех персональных данных в одном месте.
Источник