Jetpack 使用 Room 框架访问 Android 平台 SQLite 数据库

D
dashi76 2025-02-08T14:00:14+08:00
0 0 670

导入依赖

首先,我们需要在 Android 项目的 build.gradle 文件中添加 Room 的依赖项:

dependencies {
    def room_version = "2.3.0"

    implementation "androidx.room:room-runtime:$room_version"
    kapt "androidx.room:room-compiler:$room_version"
}

以上代码片段添加了 Room 的运行时依赖和用于编译的依赖。

定义 Entity 实体类

在开始使用 Room 之前,我们需要定义实体类以映射数据库中的表。下面是一个示例 User 实体类的定义:

@Entity(tableName = "users")
data class User(
    @PrimaryKey val id: Int,
    @ColumnInfo(name = "name") val name: String,
    @ColumnInfo(name = "age") val age: Int
)

上述代码片段使用 @Entity 注解将 User 类标记为数据库中的一张表。@PrimaryKey 注解表示 id 字段为主键,@ColumnInfo 注解用于指定字段在数据库中的列名。

定义 Dao 数据库访问对象接口

接下来,我们需要定义一个包含数据库访问方法的接口。以下是一个示例 UserDao 的定义:

@Dao
interface UserDao {
    @Query("SELECT * FROM users")
    suspend fun getAllUsers(): List<User>

    @Insert
    suspend fun insertUser(user: User)

    @Update
    suspend fun updateUser(user: User)

    @Delete
    suspend fun deleteUser(user: User)
}

上述代码片段使用 @Dao 注解将 UserDao 标记为一个数据访问对象接口。该接口包含了一些对用户表执行增删改查操作的方法,使用了 @Query@Insert@Update@Delete 注解分别对应查询、插入、更新和删除操作。

定义数据库实例类

最后,我们需要定义一个继承自 RoomDatabase 的抽象类来表示数据库实例。以下是一个示例 AppDatabase 类的定义:

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

    companion object {
        private var INSTANCE: AppDatabase? = null

        fun getInstance(context: Context): AppDatabase {
            if (INSTANCE == null) {
                synchronized(AppDatabase::class) {
                    INSTANCE = Room.databaseBuilder(
                        context.applicationContext,
                        AppDatabase::class.java,
                        "app_database"
                    ).build()
                }
            }
            return INSTANCE!!
        }
    }
}

上述代码片段使用 @Database 注解将 AppDatabase 标记为一个数据库类,其中 entities 参数指定数据库中的表,version 参数指定数据库的版本号。

AppDatabase 类中,我们定义了一个抽象方法 userDao(),用于获取 UserDao 对象。getInstance() 方法使用了单例模式确保数据库实例的唯一性。

结语

通过使用 Room 框架,我们可以便捷地访问 Android 平台的 SQLite 数据库。本文介绍了 Jetpack 使用 Room 框架访问 SQLite 数据库的基本步骤,包括导入依赖、定义实体类、定义数据访问对象接口和定义数据库实例类。希望本文能够帮助你快速上手使用 Room 框架进行 Android 数据库开发。

相似文章

    评论 (0)