【发布时间】:2020-04-28 06:24:48
【问题描述】:
我在资产中有一个很大的 JSON 文件,我想使用 Room 将它存储在数据库中。 现在,我的应用程序获取 JSON 文件并对其进行解析,生成一些包含信息的数据模型。
将它插入数据库的方法是什么?存储库是这样做的吗?我如何知道数据库是空的还是所有信息都已转储到数据库中?
提前致谢!
【问题讨论】:
标签: android android-room
我在资产中有一个很大的 JSON 文件,我想使用 Room 将它存储在数据库中。 现在,我的应用程序获取 JSON 文件并对其进行解析,生成一些包含信息的数据模型。
将它插入数据库的方法是什么?存储库是这样做的吗?我如何知道数据库是空的还是所有信息都已转储到数据库中?
提前致谢!
【问题讨论】:
标签: android android-room
将其插入数据库的方法是什么? 在实体 DAO 中使用插入查询,例如:
@Insert
fun insertTickets(vararg tickets: Ticket)
存储库是否可以做到这一点? 这是结构或应用程序的问题。如果你有一个存储库,那么是的,存储库应该是与数据库对话的那个。
我如何知道数据库是否为空或所有信息已转储到数据库中? 要知道数据库是否为空,您必须查询所有表中的数据,要么通过发出带有 COUNT(*) 的查询,例如
@Query("SELECT COUNT(*) FROM X")
fun numberOfRecordsInX(): Long
或询问任何一行以查看是否返回了某些内容。不知道哪个可以更快:
@Query("SELECT * FROM x ORDER BY rowid LIMIT 1")
fun gimmeAnyRowInX() : EntityX
【讨论】:
override fun onCreate(db: SupportSQLiteDatabase) 使用回调填充了数据库。但是现在,我遇到了一个问题:这仅在第一次访问数据库时完成(即尝试检索实体时),这意味着数据库已填充但查询永远不会返回。有没有办法在填充数据库时进行回调?或任何其他方式先显式初始化数据库,然后检索实体?
createFromAsset(ASSETS_DATABASE_NAME)导入它。如果没有,您的方法应该有效,查询应该返回。