我正在将行插入房间数据库,我想检查该行是否已成功插入。
这是我的刀
@Insert()
suspend fun insertOfflineData(offlineData: OfflineData): Long
@Entity
data class OfflineData(
@PrimaryKey(autoGenerate = true)
val id: Int = 0,
@ColumnInfo(name = "request_info_json")
val requestInfoJson: String
)
当我插入一行时,响应为1、2、3,依此类推。。所以它返回的是id
(是这样吗?)
因此,需要检查行是否正确插入。
我是否可以检查插入的rowId是否大于0,然后将其成功插入数据库。
private suspend fun insertOfflineData(offlineDataRequestInfo: String): Long {
var result: Long = 0
result = OfflineDatabaseManager.getInstance(app.applicationContext).insertOfflineData(
OfflineData(
0,
offlineDataRequestInfo
))
if(result > 0 ) {
//SUCCEFFLULLY INSERTED
} else {
//UNSUCCESSFULL
}
return result
}
注意:我得到的结果是1,2,3等,应该是rowId。
请建议这种方法是否正确?基本上,如果插入不成功,我想阻止用户继续
谢谢你的建议和意见
您可以使用这样的数据库调试库
根据这里的医生刀室@插入
如果@Insert方法只接收到1个参数,它可以返回一个long,即插入项的新rowId。如果参数是数组或集合,则应返回long[]或List。
底线是,用@Insert注释的方法可以返回:
如果返回值是-1或负,考虑操作失败,根据DOCS。
编辑回答@patrick。埃尔姆奎斯特评论
从房间生成的代码EntityInsertionAdapter
和SupportSQLiteStatement
/**
* Execute this SQL statement and return the ID of the row inserted due to this call.
* The SQL statement should be an INSERT for this to be a useful call.
*
* @return the row ID of the last row inserted, if this insert is successful. -1 otherwise.
*
* @throws android.database.SQLException If the SQL string is invalid for
* some reason
*/
long executeInsert();
我是一个拥有ROOM,RXJava和Android的新手。 在Android应用程序测试中,REST服务检索用户列表。如果用户已经存在,则必须修改此列表。如果该用户不存在,则将该用户插入到数据库中。如果用户已经存在,则不插入该用户。 在活动中的验证如下: Iserdao consiste en lo Siguiente: El UserRepository contiene lo siguient
问题内容: 我正在将数据有问题地插入表中。当我从另一个表执行此操作时,它很快,但如果有很多记录,则只会非常缓慢地放慢速度。即使那样,也只需要几秒钟。 当我从查询插入到表时,它需要花费几分钟的时间-大约每插入1000条记录需要一分钟。 源查询本身仅作为选择查询运行时,可能需要1-2秒。查询是否针对插入的每个记录运行?我希望它会在整个数据集中运行一次。还是有其他原因导致该函数与从另一个表插入“平面”数
在这种情况下,我希望返回,但当我执行代码时,它会引发一个异常,并带有以下消息: 提供的值为空 我不能使用,因为Dao返回的是,所以应该返回相同的类型。 在不改变DAO的情况下,如何检查用户是否存在?
问题内容: 我正在将数据插入MySQL数据库,以防万一如果插入失败,我需要给出一条适当的错误消息来指示。根据下面的代码,如果插入成功或失败,我将收到消息。 我要做的是仅在数据插入成功时才回显消息,如果失败则返回。我该如何修改我的代码? 问题答案:
我正在使用PHP、HTML5和JavaScript。 我正在制作一个网页(将链接到数据库)。我试图检查标签中是否有输入,这是可行的,但当点击按钮时,即使标签中没有输入,它也会转到下一页并发送数据。 在输入所有标签之前,您应该一直停留在页面上。它还提供了一条有效的错误消息。 我是否可以在javascript中插入一些内容,以便它转到下一页并发送数据(如method=“GET”) 我以前从来没有将数据
问题内容: 我在做一个用用java Postgres的。有什么方法可以确定是插入行还是更新行? 问题答案: 您可以查看“系统”列来说明不同之处。在这种情况下,它用于插入的行。 这是建立在未记录的实现细节上的,该细节在将来的版本中可能会更改(即使可能性不大)。它适用于Postgres 9.5和9.6。 它的优点:您无需引入其他列。