Kotlin введенное значение не ищет базу данных - PullRequest
0 голосов
/ 16 октября 2018

Мы работали над этим кодом, чтобы перехватить сообщение об ошибке, введенное в поле «Редактировать текст»Когда значение введено правильно, нам сообщают, что введенное значение не соответствуетНО, если мы выберем значение из списка просмотра рециркулятора и заполним поле «Редактировать текст» значением, которое будет показано при поиске

Вот код для поиска в DBHelper

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

Мы использовали это для класса модели, впервые используя класс данных как простой класс

data class Contact (

var id: Int,
var name: String

)

А вот нажатие кнопки, которая управляет поиском

        btnGetID.setOnClickListener {
        if(etPerson.text.toString().trim().isNullOrEmpty()){
            message("Enter Contact Name")
            return@setOnClickListener
        }
        var numeric = true
        var string = etPerson.text.toString().trim()
        numeric = string.matches(".*\\d+.*".toRegex())
        if(numeric){
            message("No NUMBERS")
            return@setOnClickListener
        }

        val dbManager = DBHelper(this)
        var name = etPerson.text.toString()
        //val contact = dbManager.getOneName(name)
        val contact = dbManager.getOneName(id.toInt())

        if(contact?.name.equals(name)){
            println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! contact ID= "+contact)
            etPerson.setText("The contact name is $name the ID is "+contact?.id.toString())
        }else{
            etPerson.setText("Name NOT = to $name and the ID is "+contact?.id.toString())
        }
    }

Мы знаем, что имя Sally находится в БД, если мы введем Sally в операторе else, которое будет отображать Имя NOT = blaЕсли мы выберем Салли из списка Recyclerview, первое утверждение покажет Имя контакта bla blaKotlin 1.2.71 API 27

Наш вопрос заключается в том, почему имя, набранное вручную, не работает, если оно совпадает?

ЗДЕСЬ ПРАВИЛЬНЫЙ КОД ДЛЯ DBHelper

    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(id = 0,name ="")
            result.id = it.getInt(it.getColumnIndex(colId))
            result.name = it.getString(it.getColumnIndex(colName))
            return result
        }
    }
    return null
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...