使用Anko获取数据库行

时间:2017-06-26 19:52:15

标签: android kotlin anko

我有一个带数据库的Kolin Android应用程序。我使用Anko库进行数据库通信。我可以在我的数据库中插入数据但是当我尝试从数据库中获取数据行时遇到了一些麻烦。

我尝试通过以下代码获取数据行

try {
           var result = select("projects").where("rowid = {id}",
                    "id" to 1).parseList(StringParser)

            Toast.makeText(applicationContext,result.toString(),Toast.LENGTH_LONG).show()

        } catch(e: Exception) {
            Toast.makeText(applicationContext,e.toString(),Toast.LENGTH_LONG).show()
        }

如何获取具有给定ID的行的内容

目前我收到此错误

  

无效的行:SingleColumnParser的行必须只包含一列

2 个答案:

答案 0 :(得分:0)

示例:

data class Controler(val id: Int, var name: String, val ssid: String,val password: String,val serialnumber: String): Serializable {}

以及您的活动->

select("projects", "id", "name", "ssid", "password", "serialnumber")
                .whereArgs("(id = {controlerId}) ", "controlerId" to id)
                .parseOpt(object : MapRowParser<Controler> {
                    override fun parseRow(columns: Map<String, Any?>): Controler {
                        controler = Controler(columns.getValue("id").toString().toInt(),
                                columns.getValue("name").toString(),
                                columns.getValue("ssid").toString(),
                                columns.getValue("password").toString(),
                                columns.getValue("serialnumber").toString())
                        return controler as Controler
                    }

                })

答案 1 :(得分:-1)

您好,您必须分享完整的代码和日志,显示什么消息? 试试这个。为什么不使用“_id”?需要Sqlite。

select("projects")
        .where("(_id = {id}),
                "id" to 1)