Скачиваний:
17
Добавлен:
17.06.2023
Размер:
707.58 Кб
Скачать

Работаем с базой данных

Мы весь день потратили на создание какого-то глупого класса, а результата не видно. Хорошо, возвращаемся на главную активность и в методе onCreate() напишем пару строчек.

Запустите проект. На первый взгляд ничего не произошло, но на самом деле в каталоге/data/data/ru.alexanderklimov.ru.databasedemo/databases появился файл cat_database.db. Вы можете в этом сами убедиться, если в эмуляторе откроете перспективу DDMS на вкладке File Explorer и просмотрите структуру файлов.

Надеюсь, вы поняли как происходит подготовка и создание базы данных. Теперь нам нужно научиться добавлять и извлекать данные из базы данных. Существуют различные способы для данных операций. Мы попробуем их все понемножку.

Вставка данных

Добавьте на экран главной активности кнопки и текстовые метки по вашему желанию. Не ограничивайте себя в фантазиях.

Первый способ. ContentValues

Первый способ вставки данных заключается в использовании класса ContentValues. Вот пример для кнопки, когда данные из текстового поля попадают в базу данных:

Способ очень удобен, требует мало кода и легко читаем. Вы создаёте экземпляр класса, а затем с помощью метода put()записываете в нужную колонку нужные данные. После чего вызывается метод insert(), который помещает подготовленные данные в таблицу.

Если колонок несколько, то вызывайте метод put() несколько раз:

У метода insert() три аргумента. В первом указывается имя таблицы, в которую будет вноситься записи. В третьем указывается объект ContentValues, созданный ранее. Второй аргумент используется для указания колонки. SQL не позволяет вставлять пустую запись, и если будет использоваться пустой ContentValue, то укажите во втором аргументе null во избежание ошибки.

Второй способ. SQL-запрос

Второй способ использует традиционный SQL-запрос INSERT INTO.... Вы формируете обычный запрос в виде строки, а затем передаёте её в метод execSQL(). Основное неудобство при этом способе - не запутаться в кавычках. Если что-то не вставляется, то смотрите логи сообщений.

Чтение данных.

Меня терзают смутные сомнения, что данные попали в базу данных, когда я нажимал на кнопки. Вас тоже? Давайте проверим. Добавим на экран ещё кнопки для извлечения данных.

Считывать данные также можно двумя способами. В любом случае результат возвращается в виде объекта Cursor. Не путайте его с курсором мыши, который бегает у вас на экране.

Первый способ. Метод query()

У метода query() множество параметров. В первом параметре укажите имя таблицы, во втором - массив имён колонок, далее идут дополнительные условия. Пока везде оставим null. Далее через цикл while извлекаем данные и помещаем в логи. Можете снова запустить проект и проверить, какие данные вы уже занесли в базу.

Второй способ. Метод rawQuery()

Второй способ использует сырой (raw) SQL-запрос. Сначала формируется строка запроса и скармливается методу rawQuery().

Итак, мы научились создавать базу данных, заносить данные и считывать данные. Изучите пример досконально, чтобы всё улеглось в голове. На следующих примерах мы расширим свои знания.

Полный листинг активности:

Естественно, мы можем вывести данные не только в лог, но и в адаптеры для Spinner или ListView. Добавьте на экран компонент Spinner и код при извлечении данных от запроса:

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