如何解决我了解吗?错了吗? 更新或插入房间数据库时,PrimaryKey错误
下面的此功能
在字典中 如果存在,则它将db中的value属性增加一个更新,并返回uiscope-函数之外 当getDictWord返回null时,它将创建一个newDictWord并将其添加到db中,并保留协程范围,然后是该函数 不?
因为我确实得到了“ android.database.sqlite.SQLiteConstraintException:唯一约束失败:DictWord.name(代码1555 SQLITE_CONSTRAINT_PRIMARYKEY)” 从那时起不时
fun addOrIncreaseDictWordAmount(dictWord: String) {
uiScope.launch {
userDatabaseDao.getDictWord(dictWord)?.let {
it.amount += 1
userDatabaseDao.updateDictWord(it)
return@launch
}
// adds the strain to the AddNew dropDown list
val newDictWord = DictWord(name = dictWord)
userDatabaseDao.insertDictWord(newDictWord)
}
解决方法
关于您最初关于?.let
语法的问题...
此语法将与可为空的值一起使用(在您的情况下,将返回getDictWord(dictWord)。
如果该值不为null,则将您传递到附加的块中,并且该值将以it
的形式传递给该块,并保证在其余的闭包中不为null。
如果该值为null,它将完全跳过该关闭。
关于您收到的间歇性错误,根据您提供的信息,我认为您的解决方案将与此处给出的答案有关:UNIQUE constraint failed
如果您能够提供更多涉及的日志和信息,我很乐意编辑和改进此答案以解决您的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。