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

Сегоня я попытамся научиться хранить дополнительные данные (в нашем случае это флаги) о сообщениях в виде базы данных.
Для быстрого старта с базой данных можно воспользоваться статьей  Хранение данных в 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.

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

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