Работал ли с базой данных в проекте

Ответ

Да, работал с SQLite и Room. Room — это абстракция над SQLite, которая упрощает работу с БД. Основные компоненты: Entity (таблица), DAO (интерфейс для запросов), Database (абстрактный класс для создания БД).

Пример:

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAll(): List<User>
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

// Инициализация
val db = Room.databaseBuilder(
    context,
    AppDatabase::class.java, "database-name"
).build()

Также использовал Firebase Realtime Database для облачных решений.

Ответ 18+ 🔞

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

Основные штуки там, ёпта, три штуки. Entity — это типа схема твоей таблицы, пишешь класс, и он превращается в таблицу. DAO — это интерфейс, где ты пишешь, какие запросы хочешь делать, типа "дай мне всех пользователей" или "найди того пидораса, который имя не заполнил". И Database — это главный абстрактный класс, который всё это склеивает в одну базу.

Вот, смотри, пример кода, я его не трогаю, как ты и просил:

@Entity
data class User(
    @PrimaryKey val id: Int,
    val name: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM user")
    fun getAll(): List<User>
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

// Инициализация
val db = Room.databaseBuilder(
    context,
    AppDatabase::class.java, "database-name"
).build()

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

А ещё, бля, для облачных дел я Firebase Realtime Database юзал. Это вообще отдельная песня. Там данные как JSON живут, синхронизация в реальном времени, но если накосячить с правилами безопасности, то любой левый чувак может прийти и наделать делов в твоей базе. Доверия к этой системе, бля, ноль, пока сам всё десять раз не перепроверишь. Но для быстрых прототипов или чатов — самое то, ебать мои старые костыли, удобно.