“ kotlin” sqlite查询一条记录

时间:2018-09-30 20:15:51

标签: android sqlite kotlin

我们不敢相信我们在问这个问题!
我们如何查询一个SQLite数据库的一条记录?

说我们想要ID,但只知道表中的名称

以下是调用数据库的代码

        btnGetID.setOnClickListener {
        val dbManager = DBHelper(this)
        val name = etPerson.text.toString()
        dbManager.getOneName(name)
        println("##################### where is return"+empName)
    }

这是数据库有趣的getOneName

    fun getOneName(name: String): String {

    val db = this.writableDatabase
    val selectQuery = "SELECT  * FROM $TABLE_NAME WHERE $colName = name"
    // val selectQuery = "SELECT  * FROM $TABLE_NAME WHERE $colId = id"
    val cursor = db.rawQuery(selectQuery, null)
    var empName = ""
    //var empID = 0

        if (cursor.getCount() > 0) {
            cursor.moveToFirst()
            empName = cursor.getString(cursor.getColumnIndex(colName))
            //empID = cursor.getInt(cursor.getColumnIndex(colId))
        }
        cursor.close()
        println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ID "+empName)
        return empName
}

此数据库具有模型,而应用程序具有适配器

class Contact{

var id: Int = 0
var name: String = ""

}

我们想输入名称并检索ID
我们甚至无法检索名称。
我们已经用Java做了多次,但是Kotlin没有运气

1 个答案:

答案 0 :(得分:2)

例如

fun getOneName(name: String): Contact? {
    val db = this.writableDatabase
    val selectQuery = "SELECT  * FROM $TABLE_NAME WHERE $colName = ?"
    db.rawQuery(selectQuery, arrayOf(name)).use { // .use requires API 16
        if (it.moveToFirst()) {
            val result = Contact()
            result.id = it.getInt(it.getColumnIndex(colId))
            result.name = it.getString(it.getColumnIndex(colName))
            return result
        }
    }
    return null
}

并使用类似

btnGetID.setOnClickListener {
    val dbManager = DBHelper(this)
    val name = etPerson.text.toString()
    val contact = dbManager.getOneName(name)
    println("##################### where is return"+contact?.name)
}
$TABLE_NAME中的

$colName"SELECT * FROM $TABLE_NAME WHERE $colName = ?"在调用之前被替换,并变成像"SELECT * FROM persons WHERE name = ?"这样的常规字符串。

然后运行db.rawQuery,第二个参数用于提供实际的查询参数。

  

selectionArgs –您可以在查询的where子句中包含?s,它将替换为selectionArgs中的值。这些值将绑定为字符串。

不要"SELECT * FROM $TABLE_NAME WHERE $colName = '$name'"little Bobby来咬你