【Android】Room数据库的使用

这篇具有很好参考价值的文章主要介绍了【Android】Room数据库的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Room 是在 SQLite 的基础上推出的 Android 库,它是 Google 官方对数据库操作的推荐方式。使用 Room 可以更方便、高效地操作 SQLite 数据库。

使用

添加依赖

在使用 Room 之前,需要在项目中添加 Room 相关的依赖。在 build.gradle 文件中添加以下依赖:

dependencies {
    def room_version = "2.3.0"

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

在上面的依赖中,我们添加了 room-runtimeroom-compiler 两个依赖。其中,room-runtime 包含了 Room 库的核心功能,可以让我们进行数据库操作。而 room-compiler 则提供了一些必要的代码生成工具,帮助我们更方便地使用 Room。

数据库实体类

在使用 Room 之前,需要先定义数据表的结构。在 Room 中,数据表结构由实体类来定义。在实体类上使用 @Entity 注解来表示它对应一个数据表。以下是一个定义用户表的实体类:

@Entity(tableName = "user")
data class User(
    @PrimaryKey(autoGenerate = true) val id: Int = 0,
    val name: String,
    val age: Int
)

在上面的代码中,我们使用 @Entity 注解将User类标记为一个数据表,其中:

tableName 表示此数据表的名称。
PrimaryKey 注解表示id字段是这个表的主键,并使用 autoGenerate = true 属性来表示 id 是自动生成的。

数据库访问对象(DAO)

在 Room 中,通过定义 DAO(Data Access Object) 接口来操作数据库。DAO 是一个抽象接口,其中定义了一些操作数据库的方法,例如增删改查等。在 DAO 接口上使用 @Dao 注解标记该接口。

以下是一个定义对用户表增删改查的 UserDao 接口:

@Dao
interface UserDao {
    @Insert
    suspend fun insert(user: User)

    @Update
    suspend fun update(user: User)

    @Delete
    suspend fun delete(user: User)

    @Query("SELECT * FROM user WHERE id = :id")
    suspend fun getById(id: Int): User

    @Query("SELECT * FROM user")
    suspend fun getAll(): List<User>
}

在上面的代码中,我们定义了插入、更新和删除用户记录的方法,以及根据 ID 获取用户和获取所有用户记录的方法。需要注意的是,我们为每一个方法都添加了 suspend 关键字,这意味着这些方法在协程中运行。

在上面的代码中,我们使用了 @Insert@Update@Delete@Query 注解来定义相应的操作。具体来说:

@Insert 注解用来定义插入数据的操作。
@Update 注解用来定义更新数据的操作。
@Delete 注解用来定义删除数据的操作。
@Query 注解用来定义查询数据的操作。在 Query 注解中,我们使用了 SQLite 语法来进行查询操作。

数据库

在定义好实体类和 DAO 接口之后,就可以定义数据库了。Room 中只有一个数据库实例,因此我们只需要定义一个具有 @Database 注解的类即可。

以下是一个定义用户数据库的 Database 类:

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

    companion object {
        private var INSTANCE: UserDatabase? = null

        fun getDatabase(context: Context): UserDatabase {
            return INSTANCE ?: synchronized(this) {
                val instance = Room.databaseBuilder(
                    context.applicationContext,
                    UserDatabase::class.java,
                    "user_database"
                ).build()
                INSTANCE = instance
                instance
            }
        }
    }
}

在上面的代码中,我们使用了 @Database 注解来标记 UserDatabase 类是一个数据访问对象。其中:

entities 属性表示此数据库中包含的实体类列表。
version 属性表示此数据库的版本号。
我们还定义了一个abstract的方法来获取 UserDao 实例。同时,我们还定义了一个companion object来提供获取数据库实例的静态方法。

使用

在定义好数据库后,我们可以开始使用它了。以下是一个使用示例:

// 获取数据库实例
val db = UserDatabase.getDatabase(context)

// 获取 UserDao 实例
val userDao = db.userDao()

// 插入用户
val user = User(name = "xiaoming", age = 18)
userDao.insert(user)

// 更新用户
user.age = 20
userDao.update(user)

// 查询所有用户
val userList = userDao.getAll()

// 查询指定用户
val id = 1
val user = userDao.getById(id)

在上面的代码中,我们首先获取 UserDatabase 实例,然后获取 UserDao 实例。接下来,我们使用 UserDao 实例进行插入、更新和查询操作。

需要注意的是,由于我们在 UserDao 中为每个方法添加了 suspend 关键字,因此调用这些方法时需要使用协程来运行。文章来源地址https://www.toymoban.com/news/detail-489547.html

到了这里,关于【Android】Room数据库的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(一)

    android 开发中,常见的数据存储的方式,有SharePreference、网络、Sqlite、MMKV、文件、 ContentProvider,其中,SharePreference、MMKV从简单的使用入手,到使用上的经验总结,最终我们借助于源码的深入阅读学习,对其原理也进行了深入的总结。但是,大家也发现了,数据库Sqlite有很多

    2023年04月10日
    浏览(43)
  • 【Jetpack】使用 Room Migration 升级数据库并导出 Schema 文件 ( Schema 文件简介 | 生成 Schema 文件配置 | 生成 Schema 文件过程 )

    使用 Room Migration 升级数据库 , 需要根据当前数据库版本和目标版本编写一系列 Migration 迁移类 , 并生成一个升级的 Schema 文件 , 该文件是 json 格式的文件 , 其中包含如下内容 : 版本信息 : 包括 当前版本 和 目标版本 ; 创建表语句 : 包括 新增的表的 定义 和 字段信息 ; 删除表语

    2024年02月09日
    浏览(50)
  • Android之SQLite数据库使用

    SQLite是Android系统集成的一个轻量级的数据库。 Android提供了 SQLiteDatabase代表一个数据库 (底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来可通过SQLiteDatabase对象来管理、操作数据库了。 Android为了让我们能够更加方便地管理数据库,

    2024年02月16日
    浏览(45)
  • Android开发——SQLite数据库的使用

    1、SQLite的特性 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。

    2024年02月15日
    浏览(43)
  • Android Studio使用SQLite数据库

    1.能使用SQLiteDatabase类操作数据库与表 2.能使用SQLiteDatabaseHelper类操作数据库与表 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。 SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过

    2024年02月01日
    浏览(43)
  • Android--Jetpack--数据库Room详解二

    本是青灯不归客,却因浊酒恋红尘 关于Room数据库的基本使用,请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 LiveData与ViewModle的使用,请参考文章Android--Jetpack--LiveData-CSDN博客 我们通过结合Room与LiveData和ViewModle的使用,可以使当我们的数据库发生变化的时候,自动的去更新

    2024年02月04日
    浏览(52)
  • Android中SQLite数据库增删改查/使用ListView显示数据库内容(有完整源码)

    android作业笔记 编写SQLite数据库相关操作的代码,实现下图中的功能(第一排按钮布局没有调整屏幕大小适配…不过下面那一排加了 android:layout_weight=“1”) SQLite展示 先上源码:https://gitee.com/meng-fanyang/SQLiteWork 里边有三个分支,对应这不同的写法: master主分支是写的可以说

    2024年02月09日
    浏览(43)
  • Android使用SQLite数据库实现基本的增删改查

    目录 一、创建activity_main和MainActivity界面 二、实现查询/删除功能创建activity_delete和DeleteActivity 三、实现添加功能创建activity_add和AddActivity  四、实现更新功能创建activity_update和UpdateActivity 五、创建user_data类、userInfo类和增加权限 总结 activity_main如图:  MainActivity如下 layout界面

    2024年02月08日
    浏览(48)
  • Android Studio 使用SQLite数据库来创建数据库+创建数据库表+更新表再次往表添加字段

    目录 一.前言 二.SQLite数据库介绍 1.什么是SQLite数据库 2.特点 3.SQLite 操作API 4.SQLite数据类型 三.SQlite数据库的使用 1.创建类继承SQLiteOPenHelper 2.创建数据库 3.创建数据库表 4.更新表添加字段 完整代码 扩展 总结 我们在使用Android进行开发的时候不可避免的要使用到数据,那么就需

    2024年02月08日
    浏览(52)
  • 【错误记录】Android 中使用 Room 框架访问数据库报错 ( cannot find implementation for xx.xxDatabase. xxDatabase_Impl )

    在 Android 中 , 使用 Room 数据库访问框架操作数据库 , 运行是报如下错误 ; 核心报错信息 : cannot find implementation for xx.xxDatabase. xxDatabase_Impl does not exist 完整报错信息 : 出现上述问题 , 只可能有两个方向出错 : 依赖配置错误 : 没有正确配置 Room 依赖 ; 注解使用错误 : 写代码时 , 没

    2024年02月04日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包