代码之家  ›  专栏  ›  技术社区  ›  Vector

一条记录的“kotlin”sqlite查询

  •  0
  • Vector  · 技术社区  · 6 年前


    如何查询SQLite数据库中的一条记录?



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

    这里是DB fun 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 回复  |  直到 6 年前
        1
  •  2
  •   zapl    6 年前

    例如像

    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

    不要这样做 "SELECT * FROM $TABLE_NAME WHERE $colName = '$name'" little Bobby