Использование SQLite Database в android

SQLite Database — это бацан данных, которая предназначена для хранения большого количества данных локально в Android. В прошлой статье мы учились работать с RecylcerView и наполнять его различными элементами

(Ссылка на предыдущий урок по RecylcerView будет в самом конце статьи).

Теперь давайте наполнять RecylcerView данными из базы данных.

Это код для базы данных. На первый взгляд выглядит сложно, но на самом деле все намного проще, чем кажется. Возможно, Вам, и не понадобится весь код, так как ниже я привожу функционал намного шире, чем мы сейчас будем использовать.

Класс Базы данных

public class MessengerDatabase extends SQLiteOpenHelper {

private static final String DATABASE_NAME = «db"; // название бд

private static final String TABLE = "MessengerTable"; // название таблицы. В одной бд может быть несколько таблиц, но лучше так не делать.

private static final int DATABASE_VERSION = 1; // версия бд

// названия колонок в таблицах private static final String ID = "id";

private static final String NAME = "name";

private static final String MESSAGE = "message";

private static final String PHOTO = "photo";

// создаем бд

public MessengerDatabase(Context context) {

super(context, DATABASE_NAME, null, DATABASE_VERSION);

}

// создаем таблицу с нужными названиями колонок.

@Override public void onCreate(SQLiteDatabase db) {

String CREATE_TABLE = "CREATE TABLE " + TABLE + "(" + ID + " INTEGER PRIMARY KEY, " + NAME + " TEXT," + MESSAGE + " TEXT," + PHOTO + " INTEGER )";

db.execSQL(CREATE_TABLE);

}

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

db.execSQL("DROP TABLE IF EXISTS » + TABLE);

onCreate(db);

}

// сохраняем данные в бд

public void save(ItemData itemData) {

// создаем переменную бд SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

// сохраняем данные в values, а потом уже в саму бд values.put(NAME, itemData.name);

values.put(message, itemData.message);

values.put(PHOTO, itemData.photo);

db.insert(TABLE, null, values); db.close();

}

// получение данных одного Item

(в нашем случае человека)

public ItemData getItem(int id) {

SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE, new String[]{ID, NAME, MESSAGE, PHOTO}, ID + « =? », new String[]{String.valueOf(id)}, null, null, null, null);

if (cursor != null && cursor.getCount() != 0) {

cursor.moveToFirst();

ItemData itemData = new ItemData();

itemData.setId(cursor.getInt(0));

itemData.setName(cursor.getString(1));

itemData.setMessage(cursor.getString(2));

return itemData; } else return new ItemData();

}

// получение всех данных виде списка ArrayList

public ArrayList getAllItems() {

ArrayList itemDataArrayList = new ArrayList<>();

String selectQuery = «SELECT * FROM » + TABLE; SQLiteDatabase db = this.getWritableDatabase();

Cursor cursor = db.rawQuery(selectQuery, null);

if (cursor != null && cursor.getCount() != 0) {

cursor.moveToFirst();

do {

ItemData itemData = new ItemData();

itemData.setId(cursor.getInt(0));

itemData.setName(cursor.getString(1));

itemData.setMessage(cursor.getString(2));

} while (cursor.moveToNext());

} return itemDataArrayList;

}

// обновление/изменение данных одного item по id

public boolean update(ItemData itemData) {

SQLiteDatabase db = this.getWritableDatabase();

ContentValues values = new ContentValues();

values.put(NAME, itemData.name);

values.put(message, itemData.message);

values.put(PHOTO, itemData.photo);

db.update(TABLE, values, ID + " =?", new String[]{String.valueOf(itemData.getId())}); db.close(); return true;

}

// удаление данных одного item по id

public void delete(ItemData itemData) {

SQLiteDatabase db = this.getWritableDatabase();

db.delete(TABLE, ID + "=?", new String[]{String.valueOf(itemData.id)}); db.close();

}

}

файл MainActivity теперь будет выглядеть вот так:

public class MainActivity extends AppCompatActivity {

ArrayList dataArrayList;

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

RecyclerView recyclerView = findViewById(R.id.rec_view);

recyclerView.setLayoutManager(new LinearLayoutManager (this // контекст , RecyclerView.VERTICAL, // ориентация false));

//reverseLayout // получаем данные из базы данных MessengerDatabase messengerDatabase = new MessengerDatabase(getApplicationContext());

dataArrayList = messengerDatabase.getAllItems();

recyclerView.setAdapter(new Adapter(dataArrayList));

}

}

Точно так же вы можете использовать все другие методы нашей базы данных:

ItemData=messengerDatabase.getItem(id);

messengerDatabase.save(itemData);

и так далее.

0
Комментарии
-3 комментариев
Раскрывать всегда