Можно ли использовать SQLite без Room в Android

«Можно ли использовать SQLite без Room в Android» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно использовать SQLite напрямую через SQLiteOpenHelper и SQLiteDatabase. Room — это обёртка над SQLite, которая упрощает работу с БД, но не обязательна.

Пример:

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

// Использование
val dbHelper = MyDbHelper(context)
val db = dbHelper.writableDatabase
db.execSQL("INSERT INTO users (name) VALUES ('John')")

Плюсы:

  • Полный контроль над запросами.
  • Минимальные накладные расходы.

Минусы:

  • Больше boilerplate-кода.
  • Нет проверки запросов на этапе компиляции.
  • Нет встроенной поддержки LiveData/Flow.

Room рекомендуется для большинства случаев, но чистый SQLite подходит для специфичных задач.