Android 使用Room将JSON数据从资产存储到数据库中

Android 使用Room将JSON数据从资产存储到数据库中,android,android-room,Android,Android Room,我在资产中有一个很大的JSON文件,我想将它存储在DB using Room中。 现在,我的应用程序获取JSON文件并对其进行解析,生成一些包含信息的数据模型 如何将其插入数据库?存储库就是这样做的吗?我如何知道数据库是空的,或者所有这些信息都已经转储到数据库中了 提前谢谢 将其插入数据库的方法是什么?在实体DAO中使用插入查询,如: @Insert fun insertTickets(vararg tickets: Ticket) 存储库就是这样做的吗?这是结构或应用程序的问题。如果您有一个

我在资产中有一个很大的JSON文件,我想将它存储在DB using Room中。 现在,我的应用程序获取JSON文件并对其进行解析,生成一些包含信息的数据模型

如何将其插入数据库?存储库就是这样做的吗?我如何知道数据库是空的,或者所有这些信息都已经转储到数据库中了

提前谢谢

将其插入数据库的方法是什么?在实体DAO中使用插入查询,如:

@Insert
fun insertTickets(vararg tickets: Ticket)
存储库就是这样做的吗?这是结构或应用程序的问题。如果您有一个存储库,那么是的,该存储库应该是与数据库对话的存储库

我如何知道数据库是空的,或者所有这些信息都已经转储到数据库中了?要知道数据库是否为空,您必须查询所有表中的数据,或者通过发出带有COUNT(*)的查询,如

或者要求任何一行查看是否有返回的内容。不知道哪个更快:

@Query("SELECT * FROM x ORDER BY rowid LIMIT 1")
fun gimmeAnyRowInX() : EntityX

是的,谢谢你的回答。现在,我使用
override-fun-onCreate(DB:SupportSQLiteDatabase)
使用回调填充了数据库。但现在,我遇到了一个问题:这只是在第一次访问数据库时(即尝试检索实体时)才完成的,这意味着数据库已填充,但查询永远不会返回。有没有办法在数据库被填充时进行回调?或者任何其他先明确初始化DB,然后检索实体的方法?如果初始化数据是静态的,即不会随时间而改变,则可以使用它准备数据库,将其放入assets文件夹,并在构建时使用
createFromAsset(assets\u database\u NAME)
导入它。如果没有,您的方法应该可以工作,查询应该返回。谢谢@Julen的回答。不幸的是,没有返回,因为我看到返回0个对象的检索查询,然后数据库被预填充。我将关闭此问题并打开一个新问题,因为我认为原始请求有点不同。谢谢
@Query("SELECT * FROM x ORDER BY rowid LIMIT 1")
fun gimmeAnyRowInX() : EntityX