Android - Работа с базой данных (часть 2)
Итак, в последний раз мы прошли такую себе мини-лекцию по базам. Сегодня время пришло заняться практикой.
Начнем с первого пункта: Создание базы данныхВ Андроиде я насчитал 3 способа создания базы данных. Начнем с самого неправильно, и закончим самым православным.
1 способ – использовать класс SQLiteDatabase. Для начала сделаем небольшой обзор этого класса, так как в будущем он нам ой как пригодится.
Иерархия: Перейдем к рассмотрению наиболее популярных методов. Для начала просто опишем их, не вдаваясь в подробности, как с ними работать: void execSQL(String sql) — выполнение sql-запроса, который не является выборкой (т.е. без select). Это всякие CREATE TABLE, INSERT, DELETE и так далее. Cursor query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) — большой и важный метод с кучей параметров. Используем для выборки. Параметры сами за себя говорят. Подробнее обсудим позже Cursor rawQuery(String sql, String[] selectionArgs) — сырой, обычный, дикий sql-запрос. Очень полезно иметь возможность обратиться к базе, используя всякие хитрые Join’ы и так далее. Дальше я не буду сильно описывать следующие методы. Скажу лишь, что они представляют цивильный способ совершения часто встречаемых запросов: insert() – возвращает id вставленной строки update() – возвращает количество обновленных строк replace() – не часто встречал такой метод в других API. Нужно поковыряться еще. Замена. delete() – возвращает количество удаленных строк Дальше пойдут методы, которые возвращают ответ «Да» или «Нет»: isOpen() – true, если база была не закрыта isReadOnly() – true, если база была открыта только для чтения Методы для работы с транзакциями:
Остальные вряд ли будут часто использоваться. С вышеперечисленными пока не будем сильно заморачиваться, а остановимся над тем, с чего собственно начали — создание базы.
Как я и говорил, существует 3 способа это сделать. И одним из этим способов является метод openDatabase(). Вот его полное описание:
static SQLiteDatabase openDatabase(String path, SQLiteDatabase. CursorFactory factory, int flags) где: path — путь к файлу базы данных. Путь для любой базы данных имеет вид: «/data/data/<package_name>/databases. <package_name> – имя пакета, которое вы указывали при создании проекта. Что-то вроде com. google. android. maps. Ну, или com. example. mysmallapp factory — хз, что такое. По умолчанию стоит null — пусть так и стоит, пока не будет трогать. flags — флаги или константы, определенные внутри класса SQLiteDatabase. Их всего четыре: CREATE_IF_NECESSARY (создавать базу, если это нужно), OPEN_READONLY (открыть только для чтения), OPEN_READWRITE (читать и писать), NO_LOCALIZED_COLLATORS (открыть без поддержки локализации) т.е. для того, чтобы создать базу с нуля нам нужно вызвать метод openDatabase() примерно таким образом:
SQLiteDatabase mDatabase = SQLiteDatabase. openOrCreateDatabase("/data/data/com. example. app/databases/my. db", null); Так даже удобнее. Но это только первый способ. 2 способ — это метод openOrCreateDatabase() в классе Context. О классе Context особо поговорим потом. Сейчас остановимся но том, что он представляет объект для общения с ОС Андроида.
Если вам доступен объект типа Context, то очень рекомендуется использовать его метод openOrCreateDatabase(). Почему? Для начала разберем его поподробнее:
Какие преимущества у такого способа? Оно одно — нам не нужно указывать полный путь к файлу базы данных. Достаточно только ее имени. Так как путь к приложению мы уже знаем исходя из данных, которые предоставляет Context. Для полноты картины разберем еще несколько методов класса Context для работы с базами данных:
boolean deleteDatabase(String name) — удаляем базу по имени. True, если завершилось успешно. File getDatabasePath(String name) — возвращает абсолютный путь по имени базы Со вторым способом мы разобрались. Перейдем к следующему, самому православному способу, который советуют использовать разработчики Гугла.
3 способ — использовать SQLiteOpenHelper.Как становится ясно из названия, SQLiteOpenHelper помогает нам открывать/создавать базы данных. Начнем с описания класса:
Иерархия: java. lang. Object android. database. sqlite. SQLiteOpenHelper Здесь все. Также все просто и с методами. Их всего 6. 2 из них — абстрактные, и их следует переопределять в потомках. Перечислим первые 4:
Здесь мы использовали паттерн Шаблон для инкапсуляции внутренних данных. Для использования базы теперь нужно лишь вызвать getReadableDatabase() или getWriteableDatabase() метод. т.е. :
И мы получим нашу любимую базу. Все очень просто и лаконично смотриться.
Конец второй частиНа этом пока остановимся. Дальше разберем, как же все таки работать со всеми этими методами — insert(), update(), replace(), delete() и тому прочее. Постараюсь этому как-нибудь выделить время. Пока всем. Вернутся Вам будет интересно:
|
- Публикации
Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.
Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.
Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...
Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...
Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...
Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.