【发布时间】:2021-06-19 22:18:06
【问题描述】:
我已经使用房间一段时间了。我来自 mysql 背景,您必须检查查询和东西的值。在房间里,我觉得这有点复杂,因为到目前为止,我可以将 dao 插入查询声明为 void 或者只要返回 rowId 如果我返回很长,我必须编写一个侦听器来通知 UI 成功/失败 我的问题是,这有必要吗?我需要插入/更新/删除的返回值还是这些查询保证成功?
【问题讨论】:
标签: android-room
我已经使用房间一段时间了。我来自 mysql 背景,您必须检查查询和东西的值。在房间里,我觉得这有点复杂,因为到目前为止,我可以将 dao 插入查询声明为 void 或者只要返回 rowId 如果我返回很长,我必须编写一个侦听器来通知 UI 成功/失败 我的问题是,这有必要吗?我需要插入/更新/删除的返回值还是这些查询保证成功?
【问题讨论】:
标签: android-room
我的问题是,这有必要吗?
这取决于并希望在下面得到更好的解释(至少一点点)。
我需要插入/更新/删除的返回值还是这些 查询保证成功? 不能保证他们会成功。但是,您可以假设他们拥有或使用 CONFLICT 处理方式。
很大程度上取决于实体的编码方式,例如,假设您有一个带有 id 和名称的简单表(实体),并且为简单起见,您有 autogenerate = true 并且您在插入时永远不允许指定 id .除非数据库很大(超出存储设备容量)或经过调整。将始终生成唯一 ID。
如果名称需要是UNIQUE,那么您正在引入一个方面,这使得插入更有可能不会成功。如果您将插入的onConflictStrategy 设置为IGNORE,那么复制不会失败,但您可能想知道是否没有插入任何内容(返回-1)。
这只是一方面。 答案确实是您需要考虑数据库和应用程序本身的设计。就我个人而言,我总是会至少通知用户异常/意外,这可能意味着是的,这是必要的(通常抑制代码比添加新代码更容易)。
【讨论】: