Довольно, тривиальная задача, но в последующих уроках я буду ссылаться на этого помощника для подключения к базе данных. Поэтому, дам код помощника, и внесу поясняющие комментарии.
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();
}
Подписывайтесь на канал, не пропустите новые публикации. Ставьте палец вверх. :-)