如何使用 Anko 检查记录是否存在?

How to check if record exists or not using Anko?

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

错误说:

parseSingle accepts only cursors with a single entry

我很清楚错误的含义,只是不知道如何解决。

这里是查询代码:

 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 函数来检查记录是否存在,但找不到它。

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

解析查询结果

所以我们有一些 Cursor,我们如何将它解析为常规 类? Anko 提供函数 parseSingle、parseOpt 和 parseList 来更容易地做到这一点。

方法说明 parseSingle(rowParser): T 只解析一行 parseOpt(rowParser): T?解析零行或一行 parseList(rowParser): 列表解析零个或多个行 请注意,如果接收到的 Cursor 包含多于一行,parseSingle() 和 parseOpt() 将抛出异常。