- Android — SQLite Database
- Database — Package
- Database — Creation
- Database — Insertion
- Database — Fetching
- Database — Helper class
- Example
- Подключение существующей БД SQLite в Android Studio
- Введение
- Создание базы данных
- Создание Android проекта
- Разметка активности
- Подготовка Java кода
- Добавление БД в проект
- Добавление класса для работы с БД
- Подключаемся к БД
- Работа с базой данных
- Обновление БД
- Работа с большой БД
- Отображение списка данных по запросу
- Добавление новых записей из Android приложения
Android — SQLite Database
SQLite is a opensource SQL database that stores data to a text file on a device. Android comes in with built in SQLite database implementation.
SQLite supports all the relational database features. In order to access this database, you don’t need to establish any kind of connections for it like JDBC,ODBC e.t.c
Database — Package
The main package is android.database.sqlite that contains the classes to manage your own databases
Database — Creation
In order to create a database you just need to call this method openOrCreateDatabase with your database name and mode as a parameter. It returns an instance of SQLite database which you have to receive in your own object.Its syntax is given below
Apart from this , there are other functions available in the database package , that does this job. They are listed below
Sr.No | Method & Description | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
Sr.No | Method & Description | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
Sr.No | Method & Description | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 |
Steps | Description |
---|---|
1 | You will use Android studio to create an Android application under a package com.example.sairamkrishna.myapplication. |
2 | Modify src/MainActivity.java file to get references of all the XML components and populate the contacts on listView. |
3 | Create new src/DBHelper.java that will manage the database work |
4 | Create a new Activity as DisplayContact.java that will display the contact on the screen |
5 | Modify the res/layout/activity_main to add respective XML components |
6 | Modify the res/layout/activity_display_contact.xml to add respective XML components |
7 | Modify the res/values/string.xml to add necessary string components |
8 | Modify the res/menu/display_contact.xml to add necessary menu components |
9 | Create a new menu as res/menu/mainmenu.xml to add the insert contact option |
10 | Run the application and choose a running android device and install the application on it and verify the results. |
Following is the content of the modified MainActivity.java.
Following is the modified content of display contact activity DisplayContact.java
Following is the content of Database class DBHelper.java
Following is the content of the res/layout/activity_main.xml
Following is the content of the res/layout/activity_display_contact.xml
Following is the content of the res/value/string.xml
Following is the content of the res/menu/main_menu.xml
Following is the content of the res/menu/display_contact.xml
This is the defualt AndroidManifest.xml of this project
Let’s try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from Android studio , open one of your project’s activity files and click Run icon from the tool bar. Before starting your application,Android studio will display following window to select an option where you want to run your Android application.
Select your mobile device as an option and then check your mobile device which will display following screen −
Now open your optional menu, it will show as below image: Optional menu appears different places on different versions
Click on the add button of the menu screen to add a new contact. It will display the following screen −
It will display the following fields. Please enter the required information and click on save contact. It will bring you back to main screen.
Источник
Подключение существующей БД SQLite в Android Studio
Пример простого Android приложения, в котором подключаемся к заранее подготовленной базе данных SQLite.
Введение
Есть два подхода к работе с БД в Android приложениях.
В первом варианте БД создается в событии OnCreate главной активности. Данный вариант хорош для случая, когда база данных при установке приложения пуста либо заполнена небольшим количеством данных, а также в БД активно производятся записи в дальнейшем.
Но данный способ не очень хорош, если, например, пишите какой-нибудь справочник или другое приложение, когда БД при установке приложения уже должна быть заполнена большим количеством записей. На мой взгляд, в этом случае лучше БД подготовить заранее, а потом уже её подключить как отдельный файл в ресурсах приложения. В данной статье рассмотрен данный случай.
Создание базы данных
Для создания БД SQLite будем использовать, например, DB Browser for SQLite. Скачиваем и устанавливаем.
Буем создавать БД с одной таблицей такого вида.
_id | name | age |
---|---|---|
1 | Anton | 30 |
2 | Alina | 24 |
3 | Dima | 28 |
4 | Dasha | 23 |
Итак, создаем базу данных:
Где-нибудь сохраняем и называем, например, info.db :
Создаем таблицу, например, clients . И добавляем там поле:
Первым полем у нас будет номер записи _id . Поле будет также первичным ключом:
Аналогичным способом создаем поля age и name . И жмем OK :
В списке таблиц у нас появилась наша таблица clients :
Переходим в режим заполнения таблицы:
Выбираем там нашу таблицу и жмем Добавить запись :
Заполняем наши данные и сохраняем изменения в БД:
Файл подготовленной базы данных можно взять из архива: info.zip.
Создание Android проекта
Открываем Android Studio и создаем там новый проект с пустой активностью. Всё как обычно:
Разметка активности
Так как мы создаем простейшее приложение, но в XML файле активности разместим только кнопку и поле для вывода текста:
Подготовка Java кода
Нам потребуется обработать клик на кнопку button и что-то записать в textView .
Поэтому найдем данные компоненты и свяжем их в Java коде с XML:
Объявим переменные компонентов:
Найдем компоненты в XML разметке:
Пропишем обработчик клика кнопки:
Полный код Java файла (без строчки package , которая у вас должна быть своей):
Добавление БД в проект
Все приготовления сделаны. Теперь можем начать работать по теме статьи. Вначале добавим файл базы данных в проект.
Создадим папку assets в нашем проекте:
Скопируем файл нашей базы данных:
Добавление класса для работы с БД
Для открытия и подготовки БД в Android используется наследник класса SQLiteOpenHelper . Мы тоже создадим наследник этого класса DatabaseHelper , но он будет сильно модифицированный, так как мы будем работать с готовой базой данных, а не создавать ей с помощью SQL запросов:
Ниже приведен текст всего класса, который нужно просто скопировать (не трогая свой первой строчки package ):
Для работы в последующим с другими базами данных вам ничего не нужно будет менять в данном классе, кроме строчек:
Разберем что означают эти строчки.
DB_NAME — имя файла БД. Какой файл БД вы создали, такое название сюда и копируем.
DB_PATH — путь к БД. Каждое приложение в Android имеет свою область памяти, куда складываются файлы программы. Вдруг вы захотите вывернуть путь к файлу БД. Я бы ничего не трогал.
DB_VERSION — самая интересная переменная (причем в примерах в сети по работе с готовой БД её обходят стороной). Это номер версии БД. Ниже описан принцип работы данного класса. Например, вы пишите справочник рецептов под Android и рецепты храните в БД. В момент создания установки приложения программа должна скопировать БД на устройство. Потом через какое-то время вы решили обновить приложение, и БД у вас обновилась: структура БД поменялась, добавились новые рецепты. И вам нужно заменить старую БД на новую. Вот тут вы и пропишите в данной переменной новую версию БД. И при открытии приложения будет произведена проверки версии БД, и файл БД обновится. Вначале версия БД равна 1.
Итак, логика работы класса DatabaseHelper в подготовке базы данных:
Копируем файл БД, если этого файла нет (при установке приложения).
Если номер БД обновлен, то заменяем один файл базы данных на другой:
- После работы с базой данных из данного класса вытаскиваем экземпляр SQLiteDatabase , с которым будем работать в дальнейшем: осуществлять запросы и так далее.
Подключаемся к БД
Перейдем в класс нашей активности. В нем создадим экземпляр класса DatabaseHelper , попытаемся обновить БД, если это требуется, а потом вытащим экземпляр SQLiteDatabase .
Создадим переменные в классе:
В методе onCreate выполним подготовительные действия:
Работа с базой данных
Теперь мы можем наконец в клике кнопки соединиться с базой данной и вытащить нужные нам данные.
Давайте при клике кнопки в textView отобразятся все имена учеников в строчку. Будем работать с помощью Cursor .
В setOnClickListener припишем такой, например, код:
Полный код Java файла активности у меня получился такой (без первой строчки package ):
Вот так приложение выглядит при запуске:
При нажатии на кнопку получим список имен из БД:
Фактически это всё. У нас есть экземпляр SQLiteDatabase mDb , с которым мы можем работать так как нам нужно. Дальше будут рассмотрены некоторые особенности работы с БД.
Обновление БД
Откроем в программе DB Browser for SQLite файл БД, который располагается в папке assets нашей программы. И внесем какие-нибудь изменения и сохраним. Я для примера поменял имя в первой строке таблицы:
Итак, в исходниках программы у нас файл БД поменялся. Запустим приложение.
И увидим, что в приложении изменения не проявились. Почему? Потому что приложение не обновляет файл БД каждый раз при запуске приложения. А вдруг вы записываете в БД какие-то записи: тогда при обновлении файла все добавленные записи сотрутся:
Нам нужно в файле класса DatabaseHelper поменять номер версии БД в сторону увеличения:
Теперь при запуске приложения данные обновятся:
Обратите внимание на то, что обновление БД произойдет только один раз. И до следующего изменения переменной DB_VERSION файл БД обновляться файлом из папки assets не будет.
Внимание! При обновлении БД заменяется файл БД, а, значит, все внесенные изменения в БД на приложении в Android (через запросы INSERT , UPDATE ) будут удалены! Поэтому, если вам внесенные изменения нужны, то не вызывайте метод updateDataBase , а в методе onUpgrade внесите стандартным способом обновления в БД. При этом замена файла БД не будет происходить. Например, так можно вставить в таблицу новый столбец:
Работа с большой БД
Когда готовил статью, то я часто встречал замечания, что файлы больше 1 Мб или 8 Мб из папки assets не копируются. Хотя, я пробовал работать с файлом в 14 Мб. Запускал на разных устройствах и никаких проблем не заметил.
Если что, то вот этот файл info_large.zip
Но мало ли. Вдруг у вас проблемы будут замечены. В качестве решения можно размещать файл БД не папке assets , а в папке res/raw :
И файл БД копируем в эту папку:
В классе DatabaseHelper нам нужно поменять только одну строчку в методе copyDBFile .
Да, если вы перед этим использовали старый вариант на том устройстве, где тестируете приложение, то не забудьте поменять версию базы данных DB_VERSION , а то вы не увидите изменений в базе данных. Можно также удалить приложение вначале, а заново его установить.
Полный код класса (без строчки package ):
Отображение списка данных по запросу
В примерах выше мы выводили информацию просто в строку в textView . Для демонстрации работы класса это достаточно, но чаще всего требуется данные из БД выводить списком. Напоследок приведу пример, когда на экран список людей из таблицы БД выведется не в строчку, а списком.
Делается это через обычный адаптер. Особенно не буду перегружать объяснением.
В activity_main.xml добавляем ListView :
Создадим файл разметки adapter_item.xml , в котором опишем внешний вид одного элемента списка с таким содержанием:
Добавим, например, в метод onCreate главной активности код:
Запускаем приложение. Видим список наших клиентов:
Помните, что запросы к БД могут быть длительными, поэтому работу с БД лучше запихивать в другой поток, например, через ASyncTask .
Добавление новых записей из Android приложения
В предыдущей версии статьи многие спрашивали, а как добавлять новые записи в таблицу. Абсолютно также, как и в обычном подходе в работе с базой данных. Например, вот код добавления новой записи:
И полный код примера файла активности с данным кодом (без строки package ):
Но я крайне не рекомендую добавлять новые записи в таблицу из-под Android приложения, если база данных представлена в виде файла. Так как если вы потом обновите файл базы данных в другой версии вашего приложения, то пользователь потеряет все свои данные. Либо пропишите бэкап пользовательских записей, либо используете для них вторую базу данных, созданную стандартным способом.
- Android Studio icon.svg by Google Inc. / (2019-06-07)
- Sqlite-square-icon.svg by Mike Toews / (2019-01-26)
Статья обновлена 2020-01-20
Пример простого Android приложения, в котором подключаемся к заранее подготовленной базе данных SQLite.
Пример простого Android приложения, в котором подключаемся к заранее подготовленной базе данных SQLite.
Источник