2017-12-18 199 views
0

我正在學習使用anko從sqlite中獲取數據。我可以成功打印數據(如果存在記錄),但是當數據不存在時,我的應用程序總是會崩潰。如何使用Anko檢查記錄是否存在?

錯誤說:

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 
} 

我試圖找到count功能queryrowParser變量,以檢查是否存在記錄與否,但無法找到它。

回答

1

從維基頁面。 https://github.com/Kotlin/anko/wiki/Anko-SQLite#parsing-query-results

解析查詢結果

因此,我們有一些光標,以及我們如何可以解析它變成普通班? Anko提供的函數parseSingle,parseOpt和parseList可以更簡單地完成它。

方法描述 parseSingle(rowParser):T解析一行 parseOpt(rowParser):T?解析零行或一行 parseList(rowParser):List解析零行或多行 請注意,如果接收的遊標包含多行,則parseSingle()和parseOpt()將引發異常。

+0

哦,我以爲parseSingle也接受空記錄。好吧,我要用parseList來試試它。 – Kakashi

+0

它的工作原理,謝謝! – Kakashi

相關問題