SQLite
 sql >> база данни >  >> RDS >> SQLite

Как да разберете, че потребителят присъства в Sqlite база данни с помощта на android?

Проблемът с вашия код е не че предавате аргументите като цяло число (не го правите), но аргументите не се разпознават като TEXT литерали, защото не са затворени в единични кавички, така че SQLite смята, че са имена на колони.

Препоръчителният начин за предаване на параметрите към rawQuery() това е:

fun userPresent (user: String, pass: String): Boolean {
    val db = writableDatabase 
    val query = "select * from $TABLE_NAME where username = ? and password = ?"
    val cursor = db.rawQuery(query, arrayOf(user, pass))
    val result = cursor.count > 0
    cursor.close()
    db.close()
    return result
}

Заместителите ? ще вземе техните стойности от съответните елементи на масива, подадени като 2-ри аргумент на rawQuery() и не е необходимо да свързвате единичните кавички, за да избегнете риска от инжектиране на sql.
След това и преди оператора return трябва да затворите и двата Cursor и db обект.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как Unicode() работи в SQLite

  2. Трябва ли да създам клас, който наследява SQLiteOpenHelper за всяка таблица в моята база данни?

  3. Сумиране на стойностите по месеци в милисекунди

  4. Неправилна неутрализация на специални елементи, използвани в SQL команда

  5. Как iif() работи в SQLite