Найти тему
Making games is easy!

Программирование под Android. Создание помощника для подключения к базе данных SQLite.

Оглавление

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

1) Собственно наш отдельный класс, назовем его StarbuzzDatabaseHelper.

Он будет помогать нам работать с базой данных.

package com.hfad.databasehelper;

import android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

class StarbuzzDatabaseHelper extends SQLiteOpenHelper{

private static final String DB_NAME = "name_database"; // Имя базы данных

private static final int DB_VERSION = 1; // Версия базы данных

// Версию увеличиваем когда нам надо внести изменения в базу данных у уже установленного у пользователя приложения.

StarbuzzDatabaseHelper(Context context){

super(context, DB_NAME, null, DB_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db){

updateMyDatabase(db, 0, DB_VERSION);

}

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

updateMyDatabase(db, oldVersion, newVersion);

}

private void updateMyDatabase(SQLiteDatabase db, int oldVersion, int newVersion) {

if (oldVersion < 1) {

// По сути ниже мы создаем Шаблон нашей таблицы базы данных

// Таблицу назвали NAME_TABLE_1

// В ней 4 столбца 1 - уникальный номер (заполняется сам)

// 2- Название (текстовая строка) 3 – Описание (текстовая строка)

// 4 – идентификатор ресурса (цифровой номер для нахождения картинки (фото))

db.execSQL("CREATE TABLE NAME_TABLE_1 (_id INTEGER PRIMARY KEY AUTOINCREMENT, "

+ "NAME TEXT, "

+ "DESCRIPTION TEXT, "

+ "IMAGE_RESOURCE_ID INTEGER);");

// Ниже вызываем функцию, где производится создание записей в таблице базы данных

// Т.е. создаем и заполняем ячейки в нашей таблице

// R.drawable.name_image_1 – это идентификатор ресурса (в данном случае графической картинки находящейся в папке drawable) У картинки имя name_image_1

insertTable_1(db, "Название 1", "Описание 1", R.drawable.name_image_1);

insertTable_1(db, "Название 2", "Описание 2", R.drawable.name_image_2);

insertTable_1 (db, "Название 3", "Описание 3", R.drawable.name_image_3);

// Как видите мы занесли в таблицу три строки

}

if (oldVersion < 2) { /* Если, данные в таблице нужно изменить, а у пользователей уже установлено приложение.

Для этого указываем выше версию 2 (DB_VERSION =2)

А новые изменения пишем здесь

Например, можно добавить новый столбец в таблицу базы данных.

Или просто, изменить данные в таблице базы данных

//*/

}

}

/* Ниже функция для добавления данных в таблицу NAME_TABLE_1 нашей базы данных //*/

private static void insertTable_1(SQLiteDatabase db, String name,

String description, int resourceId) {

ContentValues drinkValues = new ContentValues();

drinkValues.put("NAME", name);

drinkValues.put("DESCRIPTION", description);

drinkValues.put("IMAGE_RESOURCE_ID", resourceId);

db.insert("NAME_TABLE_1", null, drinkValues);

}

}

2) Теперь посмотрим как же нам подключить нашу базу данных в приложение, и считать наши данные с таблицы базы данных. (выдержки из кода)

private SQLiteDatabase db;
private Cursor cursor;

// Ниже код для считывания данных с выбранной таблицы

try {

   SQLiteOpenHelper englishDatabaseHelper =
new StarbuzzDatabaseHelper(this);

db = englishDatabaseHelper.getReadableDatabase();

// Ниже формируем наш запрос на выборку данных
cursor = db.query("NAME_TABLE_1",
  new String[]{"_id", "NAME", "DESCRIPTION", "IMAGE_RESOURCE_ID"},
            // String[]{
"__0", "____1", "__________2", "________________3"},

// Запрос ниже выведет все строки что есть в базе данных
null, null, null, null, null);      

/* А если заменить этим, то выведет то что соответствует данной выборке

Т.е. выведет все строки где NAME и DESCRIPTION равны Название 1 и Описание 1 //*/

//"NAME = ? AND DESCRIPTION = ?",

            //
new String[] {"Название 1", "Описание 1"},

            //
null, null, null);


if (cursor.moveToFirst()) {
        do {

// Здесь мы обходим и можем получить все наши данные из выбранной таблицы
int
_id = cursor.getInt(0);           

String name_ = cursor.getString(1);

String description = cursor.getString(2);

int image_id = cursor.getInt(3);

        } while (cursor.moveToNext());

    } else {

//  Сюда попадаем, если в результате запроса данных нет

}
if(cursor != null) {cursor.close();}
if(db != null) {db.close();}
}
catch(SQLiteException e) {
    Toast toast = Toast.
makeText(this, "Database unavailable", Toast.LENGTH_SHORT);
    toast.show();
}

Подписывайтесь на канал, не пропустите новые публикации. Ставьте палец вверх. :-)