Room数据库框架使用(一)

Room数据库框架使用(一)

最近在写一个教务软件,由于学校教务系统比较垃圾娇弱,前端页面经常崩溃,就打算本地保存一些数据。本来打算和往常一样用郭神的LitePal,后来寻思Jetpack推出Room好几年了,寻思着官方的框架肯定有它的独到之处,索性写个专题记录一下使用过程。

添加依赖

声明依赖项

使用框架第一步,先导包。老样子,我还是用Java来写这个项目。

dependencies {
    def room_version = "2.4.3"

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

配置编译器选项

android {
    ...
    defaultConfig {
        ...
        javaCompileOptions {
            annotationProcessorOptions {
                arguments += [
                    "room.schemaLocation":"$projectDir/schemas".toString(),
                    "room.incremental":"true",
                    "room.expandProjection":"true"]
            }
        }
    }
}

OK,查看build标签查看是否导入成功

在这里插入图片描述

如果导入不成功可以看看整个项目setting.gradle看看是否引入了jetpack库

maven { url 'https://jitpack.io' }

然后开始使用。

生成的本地文件

最开始我使用的是SQLite原生数据库操作,他会生成一个.db文件和一个.db-journal文件,用Navicat类的数据库管理软件打开可以查看结构和数据,LitePal是基于SQLite封装的框架,效果一样。

在这里插入图片描述

但是Room是基于SQLite3的数据库,但是有别于SQLite,它会生成一个.db文件、.db-shm和一个.db-wal文件

room生成的三个文件

db-wal:从3.7.0版本开始,SQLite支持一种新的事务控制机制,称为“写前日志”或“WAL”。当数据库处于WAL模式时,到该数据库的所有连接都必须使用WAL。特定的数据库将使用回滚日志或WAL,但不能同时使用两者。WAL始终位于与数据库文件相同的目录中,并且具有与数据库文件相同的名称,但是附加了字符串“-wal”。

db-shm:从概念上讲,wal-index是共享内存,尽管当前的VFS实现为wal-index使用一个映射文件。映射文件位于与数据库相同的目录中,并具有与数据库相同的名称,后面附加了“-shm”后缀。因为WAL索引是共享内存,所以当客户机位于不同的机器上时,SQLite不支持网络文件系统上的journal_mode=WAL。数据库的所有用户必须能够共享相同的内存。

所以当要打开对应的数据库查看表结构的时候要同时把.db、.db-shm、.db-wal三个文件放在同一文件夹下,然后再数据库查看软件中导入对应的.db文件就可以查看数据库咯

其实官方还提供了另外一种方法,不过我没有找到相关位置。

使用 Database Inspector 调试数据库

在 Android Studio 4.1 及更高版本中,您可以利用 Database Inspector 在应用运行时检查、查询和修改应用的数据库。这对于数据库调试尤为有用。Database Inspector 可处理普通的 SQLite 数据库以及在 SQLite 的基础上构建的库(例如 Room)。

打开 Database Inspector

如需在 Database Inspector 中打开数据库,请执行以下操作:

  1. 在模拟器或搭载 API 级别 26 或更高版本的已连接设备上运行您的应用

    注意:与 Android 11 模拟器有关的已知问题会导致应用在连接到 DB Inspector 时发生崩溃。如需解决此问题,请按以下步骤操作

  2. 从菜单栏中依次选择 View > Tool Windows > App Inspection

  3. 选择 Database Inspector 标签页。

  4. 从下拉菜单中选择正在运行的应用进程。

  5. 当前正在运行的应用中的数据库显示在 Databases 窗格中。展开要检查的数据库的节点。

查看和修改数据

Databases 窗格显示应用中的数据库列表以及每个数据库包含的表格。双击表格名称即可在检查器窗口的右侧显示其数据。您可以点击列标题,按该列对检查器窗口中的数据进行排序。

“Database Inspector”窗口的屏幕截图。

图 1. Database Inspector 窗口。

您可以通过以下方式修改表中的数据:双击单元格,输入新值,然后按 Enter 键。如果您的应用使用 Room 并且界面会观察数据库(例如使用 LiveDataFlow),那么您对数据所做的任何更改会立即显示在正在运行的应用中。否则,只有当应用下次从数据库中读取修改后的数据时,您才会看到更改。

查看实时数据库更改

如果您希望 Database Inspector 在您与正在运行的应用交互时自动更新它呈现的数据,请勾选检查器窗口顶部的 Live updates 复选框。启用实时更新后,检查器窗口中的表格将变为只读状态,您无法修改其中的值。

或者,您也可以通过点击检查工具窗口顶部的 Refresh table 按钮以手动更新数据。

查询数据库

Database Inspector 可以在应用运行时对应用的数据库运行查询。Database Inspector 可以在您的应用使用 Room 的情况下使用 DAO 查询,但也支持自定义 SQL 查询。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿列夫一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值