【问题标题】:Kotlin database update function returning 0 (Android Studio)Kotlin 数据库更新函数返回 0 (Android Studio)
【发布时间】:2022-01-10 18:08:58
【问题描述】:

下面是我创建的一个函数,它应该更新数据库中的一行。

fun editQuestion(identifier: String, questionNumber: Int, questionText: String, answers: Array<String>, correctAns: Int) {
        val db = this.writableDatabase

        val contentValues = ContentValues()
        contentValues.put(QUESTION_TEXT, questionText)
        for (i in answers.indices) {
            contentValues.put(ANSWER_ARRAY[i], answers[i])
        }
        contentValues.put(CORRECT_ANS, correctAns)

        db.update(QUESTION_TABLE, contentValues, "$MASTER_ID = ? AND $QUESTION_NUM = $questionNumber", arrayOf(identifier))
    }

函数调用后,数据库数据似乎没有变化,打印db.update()的输出时,返回0

我有类似的功能可以成功更新数据库中的其他表,所以db.update() 确实有效。

我还有一些函数具有db.update() 调用,这些函数以上述函数中的表为目标,以便可以操作表。

我还仔细检查了这个函数的参数和值是否应该是它们应该是的。

我也知道WHERE 子句是正确的,因为我使用完全相同的子句删除同一张表中的一行。

最后,我还检查了我是否正确使用了val contentValues,它似乎是正确的。

所以我的问题真的是我错过了什么?我想不出还会发生什么。任何帮助将不胜感激,只需询问是否需要更多代码或上下文来回答。

【问题讨论】:

  • db.update() 不返回 falsetrue。它返回表中更新的行数。
  • @forpas 哦,我明白了,我认为 0 表示错误
  • 如果你得到 0 那么这意味着没有行被更新,可能是因为在 WHERE 条件下没有行。
  • @forpas 是的,这帮助我解决了这个问题。谢谢

标签: android sqlite android-studio kotlin


【解决方案1】:

如果有人遇到类似问题,请务必检查您的参数!

我的questionNumber 参数比它应该在这里少1,它解决了我的问题。简而言之,这是一个 PICNIC 问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2017-09-07
    相关资源
    最近更新 更多