Работал ли с SQLite

Ответ

Да, работал. SQLite — встроенная база данных в Android. Используется для хранения локальных данных. Основные компоненты: SQLiteOpenHelper для создания/обновления БД, SQLiteDatabase для операций с данными.

Пример создания БД:

class DbHelper(context: Context) : SQLiteOpenHelper(context, "app.db", null, 1) {
    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
    }
    override fun onUpgrade(db: SQLiteDatabase, oldV: Int, newV: Int) {
        db.execSQL("DROP TABLE IF EXISTS users")
        onCreate(db)
    }
}

Для запросов лучше использовать Room — абстракция над SQLite с проверкой на этапе компиляции.

Ответ 18+ 🔞

А, ну это ж классика, ёпта! SQLite в Android — это как встроенный шкафчик в твоей квартире, куда всё своё барахло складываешь. Работал, конечно, кто ж с ним не работал-то.

Смотри, суть простая: база данных прямо в телефоне живёт. Основные киты, на которых всё держится — это SQLiteOpenHelper, который базу создаёт или обновляет, если версию поменяли, и SQLiteDatabase, через который уже все операции — добавить, удалить, спросить что-то — делаешь.

Вот смотри, как это обычно выглядит, прям классический пример:

class DbHelper(context: Context) : SQLiteOpenHelper(context, "app.db", null, 1) {
    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)")
    }
    override fun onUpgrade(db: SQLiteDatabase, oldV: Int, newV: Int) {
        db.execSQL("DROP TABLE IF EXISTS users")
        onCreate(db)
    }
}

В onCreate пишешь, какие таблицы создать, когда база впервые рождается. А onUpgrade — это когда новая версия приложения приехала, и схему данных надо поменять. Тут часто просто нахуй всё сносят и заново создают, как в примере, но в реальности, конечно, миграции по-умному пишут, чтобы пользователи не охуели, потеряв все данные.

Но слушай, если честно, в 2024-м руками с SQLiteDatabase возиться — это как на Запорожце через всю страну ехать. Едет, но овердохуища мороки. Один неверный запрос — и приложение крешится, да и проверок никаких на этапе компиляции.

Поэтому все адекватные люди уже давно используют Room. Это такая обёрточка сверху, библиотека от гугла. Она, блядь, красота: ты описываешь сущности (Entity), запросы (Dao) и саму базу (Database) аннотациями, а она тебе на этапе компиляции говорит: «Чувак, ты тут хуйню написал, таблицы users не существует». То есть ошибку в SQL-запросе ты узнаешь сразу, когда проект собираешь, а не когда пользователь уже в приложении на кнопку нажал. Волнение ебать, терпения ноль — вот что экономит.

Короче, SQLite — это фундамент, он везде и всегда. Но если не хочешь себе геморрой с ручным управлением, бери Room и живи спокойно. Чистая магия, а не библиотека.