问题标签 [android-room-prepackageddatabase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
45 浏览

android-room - 如何使用 Room 的 prepackagedDatabaseCallback?

使用 2.3.0-alpha03 版本的房间有一个prepackagedDatabaseCallback它说:-

  • 此回调将在复制预包 DB 之后但在 Room 有机会打开它之前调用,因此在调用 RoomDatabase.Callback 方法之前。此回调可用于更新预打包 DB 模式以满足 Room 的模式验证。

那么我怎么能用它来规避预期的无效架构......找到......?

我可以用它来介绍触发器,因为房间没有用于创建触发器的注释吗?

请注意,这旨在作为询问和回答您自己的问题

0 投票
1 回答
31 浏览

android - 更新预打包的数据库

我从服务器下载了一个 SQLite 文件,其中包含应用程序周围的所有静态数据。我用它来填充房间数据库。

使用 Room 2.1.0,我曾经将文件复制到数据库目录,并且在使用旧实体的版本上更新 SQLite 文件模式(添加新列)时它工作正常。

现在使用 Room 2.4.0,如果 SQLite 文件架构发生更改,则会抛出异常
IllegalStateException("Pre-packaged database has an invalid schema:")

有没有跳过模式验证?

0 投票
0 回答
33 浏览

android - 如何保存和读取列表在 Android 的 Room DB 中?

我将 API 响应作为 JSON 对象获取,并且我正在使用模型类在 RecyclerView 中处理它。我将其作为字符串保存到 Room DB。现在我从数据库中选择插入的数据。但是如何处理选定的字符串数据。两者的类型都有一些问题。在选择我正在获取字符串数据作为响应时,但我想以列表类型获取它以在 Recyclerview 中处理它。

使用改造 api 调用获取响应

数据库插入和更新:

}

从数据库中获取数据

此选择数据是 String ,但我想将其转换为 List 格式。

0 投票
1 回答
32 浏览

android - 带有多张桌子的预包装房间数据库

(基于:

Android Room:一个数据库多表

https://gist.github.com/garcia-pedro-hr/9bb5d286d3ea226234a04109d93d020a

我有一个包含多个表的 .db 文件,我无法思考如何在任何应用程序中实现它,我应该为 .db 文件中的每个表创建一个实体吗?即使每个表都包含精确的列?

例子:

(上面列出的信息是我从“mySQL workbench”得到的)

和表'b'中的一条数据:

和表'c'中的一条数据:

0 投票
2 回答
36 浏览

android - Android房间数据库删除不起作用

我正在使用 Room DB 来获取回收站视图。每行都有一个删除图标来删除该项目。我也想从 Room db 中删除相同的项目。我已经完成了下面的代码,但它只反映在列表中,刷新后再次从 db 加载已删除的数据。

带有删除侦听器的适配器类:

数据库道

请帮助我。

0 投票
1 回答
29 浏览

kotlin - 房间预打包的数据库有一个无效的架构错误期望类型=整数找到=布尔

我对这个问题有点迷茫。

Pre-packaged database has an invalid schema错误具有以下输出:

预期的

成立

我省略了其他一些列,因为它们不是问题并且它们的输出匹配。问题在于预期INTEGER但找到的列BOOLEAN

数据库架构如下:

最初,我确实使用以下类型的列创建了accountRoom :@EntityBOOLEANBoolean

然后,第一次抛出错误时,我确实将Boolean类型列更改为Int类型:

但是,错误不断发生。我尝试使用此答案迁移单个列,以查看它是否与预期/找到的输出匹配。

但显然迁移不起作用,也没有改变输出中的任何内容,因为错误仍然相同。另外,我不确定哪个是 Room 数据库,哪个是资产数据库。我的直觉是,“找到”输出是与资产匹配的输出,因为BOOLEAN类型不同,但这并不完全清楚。为什么将 Room@ColumnInfo值类型从 Boolean 更改为 Int 似乎没有生效?如果需要为BOOLEAN我的数据库上的每一列类型实现上述迁移,那么为多个表应用迁移的正确方法是什么?(因为我有更多具有这种BOOLEAN类型的表,尽管它们不在错误中)

0 投票
0 回答
15 浏览

android - Android Room:查询在嵌入式字段中返回 null

您好我正在使用 Room DB 并在表中插入一个主键和两个嵌入式字段。在尝试从该表中获取数据时。嵌入的字段返回 null。

表如下:

以及用于在 DAO 中获取数据的查询

并从 Activity 调用:

数据= DatabaseClient.getInstance(getApplicationContext()).getAppDatabase().data().getALL();

请帮我解决这个问题!