Ответ
Да, можно использовать 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 подходит для специфичных задач.