Главная » Разработка для Android » Открытие и создание баз данных без использования SQLiteHelper

0

Вы можете открывать и создавать базы данных без помощи класса SQLiteHelper, используя метод openOrCreateDatabase, принадлежащий объекту Context вашего приложения.

Получите  доступ к базе данных в два шага. Сначала  вызовите  метод openOrCreateDatabase, чтобы создать новую базу данных. Затем из получен- ного экземпляра базы данных вызовите execSQL, чтобы выполнять команды на языке SQL, с помощью которых будут созданы таблицы и установлены отношения  между ними. Весь этот процесс показан в листинге 7.3.

Листинг 7.3. Создание новой базы данных

private static final String DATABASE_NAME = "myDatabase.db";

private static final String DATABASE_TABLE = "mainTable";

private static final String DATABASE_CREATE =

"create table " + DATABASE_TABLE + " ( _id integer primary key autoincrement," +

"column_one text not null);"; SQLiteDatabase myDatabase;

private void createDatabase() {

myDatabase = openOrCreateDatabase(DATABASE_NAME, Context.MODE_PRIVATE, null);

myDatabase.execSQL(DATABASE_CREATE);

}

Особенности организации баз данных в Android

Существует несколько специфичных для Android особенностей, которые нужно учитывать при проектировании базы данных:

файлы  (например, графические или звуковые  файлы), как правило, не хранятся в таблицах базы данных. Используйте строку для хране- ния пути к файлу, а еще лучше полный URI;

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

доступ к вашей таблице  с помощью Источников данных, поле с уни- кальным ID обязательно.

Выполнение запросов к базе данных

Каждый запрос к базе данных возвращает объект Cursor. Это позволяет Android  управлять ресурсами  более эффективно, получая  и освобождая значения  строк и столбцов  по запросу.  Чтобы  выполнить запрос  к базе данных, используйте метод query, передавая ему:

необязательное значение  типа Boolean, которое определяет,  должен ли результирующий набор данных содержать  исключительно уни- кальные значения;

имя базы данных, к которой нужно получить доступ;

проекцию в виде массива строк, содержащего список столбцов, кото- рые нужно включить в результирующий набор;

оператор WHERE, определяющий те строки, что должны быть воз- вращены (можно  использовать маски «?», которые заменятся пере- данными значениями для оператора SELECT);

массив строк, выступающих в роли аргументов для оператора SELECT, которые заменят маски «?» в операторе WHERE;

оператор  GROUP BY, который  определяет,  каким  образом  будут сгруппированы результирующие строки;

фильтр HAVING, который определяет, какие группы строк включать в результат, если использовался оператор GROUP BY;

строку, описывающую порядок возвращения результирующих строк;

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

В листинге 7.4 показан фрагмент кода, который возвращает  все или не- которые строки в заданной таблице.

Листинг 7.4. Выполнение запросов к базе данных

// Возвращает все строки для первого и третьего столбца, без повторений

String[] result_columns = new String[] {KEY_ID, KEY_COL1, KEY_COL3};

Cursor allRows = myDatabase.query(true, DATABASE_TABLE, result_columns, null, null, null, null, null, null);

// Возвращает все столбцы для строк, в которых третий столбец совпадает

// с заданным значением, а сами строки отсортированы по пятому столбцу. String where = KEY_COL3 + "=" + requiredValue;

String order = KEY_COL5;

Cursor myResult = myDatabase.query(DATABASE_TABLE, null, where, null, null, null, order);

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии