Главная » Создаем базу данных SQLite Database | |
Сегодня мы сделаем приложение, которое с помощью использования базы данных SQLite Database будет способно сохранять введенные в него данные и выдавать их пользователю при запуске приложения. Мы сделаем более упрощенное приложение и здесь пока не будет возможности для пользователя вводить данные в базу, данные мы введем сами в коде класса MainActivity и они будут храниться и отображаться базой данных при запущенном приложении. Не охота влезать в теорию, поэтому если вы хотите постигнуть всю теорию основ работы с базами данных в Android, то поищите ее на других ресурсах, либо ждите, пока она появится здесь :). Мы же просто сделаем несложный пример занесения данных в базу SQLite Database и их чтение и отображение пользователю. Создаем новый проект, выбираем Blank Activity. Начнем с создание пользовательского интерфейса приложения. Он будет состоять из двух текстовых полей, одно с названием приложения, другое будет использоваться для вывода данных с базы данных. Открываем файл activity_main.xml и добавляем туда следующий код:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Пример работы Android SQLiteDatabase"
android:textSize="12pt"/>
<TextView
android:id="@+id/content_list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="8pt"/>
</LinearLayout>
Теперь перейдем к работе в классе MainActivity.java. Здесь мы объявляем объект класса SQLiteAdapter, который нужен для связи activity приложения с базой данных. Мы выполняем с ним следующие действия: открываем для записи, удаляем все, что там уже есть, с помощью команды insert выполняем запись данных и закрываем. После этого, открываем ту же базу уже для чтения, берем с нее все данные и отображаем в TextView:
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private SQLiteAdapter mySQLiteAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView listContent = (TextView)findViewById(R.id.content_list);
// Создаем/открываем SQLite базу данных для записи, удаляем все ее содержимое,
// заполняем указанным содержимым с помощью команды insert, и закрываем:
mySQLiteAdapter = new SQLiteAdapter(this);
mySQLiteAdapter.openToWrite();
mySQLiteAdapter.deleteAll();
mySQLiteAdapter.insert("Привет");
mySQLiteAdapter.insert("вот так");
mySQLiteAdapter.insert("мы ");
mySQLiteAdapter.insert("храним текст");
mySQLiteAdapter.insert("в базе данных");
mySQLiteAdapter.close();
// Открываем ту же базу данных для чтения ее содержимого:
mySQLiteAdapter = new SQLiteAdapter(this);
mySQLiteAdapter.openToRead();
//Вытаскиваем всю информацию в качестве строковых ресурсов:
String contentRead = mySQLiteAdapter.queueAll();
mySQLiteAdapter.close();
// Отображаем прочитанные данные в TextView:
listContent.setText(contentRead);
}
}
Работа в этом классе закончена. Но пока что у нас нет самого главного - адаптера SQLiteAdapter. Создаем новый класс под названием SQLiteAdapter. Этот файл мы заполняем следующим образом:
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
public class SQLiteAdapter {
// Вводим используемые значения и переменные:
public static final String DATABASE_NAME = "MY_DATABASE";
public static final String DATABASE_TABLE = "MY_TABLE";
public static final int DATABASE_VERSION = 1;
public static final String KEY_CONTENT = "Content";
// Создаем таблицу с данными MY_DATABASE:
private static final String SCRIPT_CREATE_DATABASE = DATABASE_TABLE + KEY_CONTENT;
private SQLiteHelper sqLiteHelper;
private SQLiteDatabase sqLiteDatabase;
private Context context;
public SQLiteAdapter(Context c){context = c;
}
// Читаем данные с базы данных:
public SQLiteAdapter openToRead() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getReadableDatabase();
return this;
}
// Записываем данные в базу данных:
public SQLiteAdapter openToWrite() throws android.database.SQLException {
sqLiteHelper = new SQLiteHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
sqLiteDatabase = sqLiteHelper.getWritableDatabase();
return this;
}
// Закрываем sqLiteHelper:
public void close(){sqLiteHelper.close();
}
// Вставляем введенное содержимое в базу:
public long insert(String content){
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_CONTENT, content);
return sqLiteDatabase.insert(DATABASE_TABLE, null, contentValues);
}
// Удаляем все содержимое базы данных:
public int deleteAll(){return sqLiteDatabase.delete(DATABASE_TABLE, null, null);
}
// Делаем запрос на получение текстовых данных с базы, отображаемых в виде столбца:
public String queueAll(){
String[] columns = new String[]{KEY_CONTENT};
Cursor cursor = sqLiteDatabase.query(DATABASE_TABLE, columns,null, null, null, null, null);
String result = "";
int index_CONTENT = cursor.getColumnIndex(KEY_CONTENT);
for(cursor.moveToFirst(); !(cursor.isAfterLast()); cursor.moveToNext()){
result = result + cursor.getString(index_CONTENT) + "\n";
}
return result;
}
public class SQLiteHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context, String name,CursorFactory factory, int version) {
super(context, name, factory, version);
}
// Метод, создающий таблицу для хранения данных:
@Override
public void onCreate(SQLiteDatabase db) {db.execSQL(SCRIPT_CREATE_DATABASE);
}
// Метод для обновления базы данных, оставим пустым:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
}
Немного разберемся, что же тут понаписано. Все это можно разделить на такие основные блоки: - ввод используемых переменных; - onCreate () - создание базы; - onUpgrade () - обновление базы в случае надобности. Мы задаем версию базы: public static final int DATABASE_VERSION = 1; это значит, что в случае смены версии базы заработает метод обновления для обновления ее содержимого; - метод openToWrite () - открывает базу для записи данных; - метод openToRead () - выполняет чтение данных; - метод close - закрываем базу; - метод insert - вводим в базу данные в формате "ключ - значение" - deleteAll() - удаляем все данные с базы; Ну что же, запустим наше приложение и посмотрим на результат: Внесение и чтение данных в базу данных SQLite Database произведено успешно! Также вспомните работу с хранением настроек приложения с помощью SharedPreferences. | |
|
Всего комментариев: 4 | |
| |