Хранение данных в программе.

Сегоня я попытамся научиться хранить дополнительные данные (в нашем случае это флаги) о сообщениях в виде базы данных.
Для быстрого старта с базой данных можно воспользоваться статьей  Хранение данных в Android   на Хабре.

В нашем случае запрос создания таблицы будет доаольно простым: таблица будет состоять из двух столбцов: id сообщения и флага.
public class FlagsDBOpener extends SQLiteOpenHelper {

 private static final String DBNAME = "flags";
 private static final int DBVERSION = 1;
 private static final String CREATE_TABLE = "CREATE TABLE message_flag " +
 " (message_id INTEGER PRIMARY KEY, flags INTEGER)";
 
 public FlagsDBOpener (Context context) {
  super(context, DBNAME, null, DBVERSION);
 }
 
 @Override
 public void onCreate(SQLiteDatabase dataBase) {
  dataBase.execSQL(CREATE_TABLE);
 }

 @Override
 public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
  // Nothing to do.
 }
}


Этот класс в своем конструкторе будет создавать (или открывать) базу данных.
SQLiteOpenHelper имеет vметоды для получения ссылки на, базу данных getReadableDatabase() и getWiritableDatabase().

Для запроса флага у интересующего нас сообщения достаточно выполнить код:
    SQLiteDatabase db = dbOpener.getReadableDatabase();
    Cursor result = db.query("message_flag", new String[]{"flags"}, "message_id = " + Integer.toString(messageId), null, "message_id", null, null);
    boolean flag = false;
    if (result.getCount() > 0) {
        result.moveToFirst();
        if (result.getInt(1) > 0) {
            flag = true;
        }
    } 
    /* Using flag */

Comments

Popular posts from this blog

Compilation from macOS(Intel) to linux x86_64 finaly works. Cross compilation of the rust code with bazel. Part 2.

Fetching toolchains at build time. Cross compilation of the rust code with bazel. Part 4

Cross compilation for ARM v7. Cross compilation of the rust code with bazel. Part 3.