【问题标题】:How to check if record exists or not using Anko?如何使用 Anko 检查记录是否存在?
【发布时间】:2017-12-18 11:07:09
【问题描述】:

我正在学习使用 anko 从 sqlite 获取数据。我可以成功打印数据(如果记录存在),但是当数据不存在时我的应用程序总是崩溃。

错误提示:

parseSingle 只接受带有单个条目的游标

我完全知道错误的含义,只是不知道如何解决它。

查询代码如下:

 fun getUserByUid(uid: Int): UserModel
 { 
    val data = context.database.use {
        val db = context.database.readableDatabase
        val columns = UserModel.COLUMN_ID + "," + UserModel.COLUMN_NAME + "," + UserModel.COLUMN_API_KEY

        val query = db.select(UserModel.TABLE_NAME, columns)
                .whereArgs("(uid = {userId})",
                        "userId" to uid)

        query.exec {
            val rowParser = classParser<UserModel>()
            parseSingle(rowParser) // this line that trigger error exception
        }
    }

    return data
}

我试图在queryrowParser变量中找到count函数来检查记录是否存在但找不到。

【问题讨论】:

    标签: android sqlite anko


    【解决方案1】:

    来自维基页面。 https://github.com/Kotlin/anko/wiki/Anko-SQLite#parsing-query-results

    解析查询结果

    所以我们有一些 Cursor,我们如何将它解析为常规类? Anko 提供了 parseSingle、parseOpt 和 parseList 函数,可以更轻松地完成。

    方法说明 parseSingle(rowParser): T 只解析一行 parseOpt(rowParser): T?解析零行或一行 parseList(rowParser): List Parse 零行或多行 注意 parseSingle() 和 parseOpt() 会在接收到的 Cursor 包含多于一行时抛出异常。

    【讨论】:

    • 哦,我认为 parseSingle 也接受空记录。好的,我将尝试使用 parseList。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 2021-06-01
    • 2019-04-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    相关资源
    最近更新 更多