Problem z Twoim kodem nie że przekazujesz argumenty jako liczby całkowite (nie przekazujesz), ale argumenty nie są rozpoznawane jako TEXT
literały, ponieważ nie są ujęte w pojedyncze cudzysłowy, więc SQLite myśli, że są to nazwy kolumn.
Zalecany sposób przekazywania parametrów do rawQuery()
jest to:
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
}
Symbole zastępcze ?
pobierze ich wartości z odpowiednich elementów tablicy przekazanej jako drugi argument rawQuery()
i nie musisz łączyć pojedynczych cudzysłowów, aby uniknąć ryzyka wstrzyknięcia sql.
Po tym i przed instrukcją return musisz zamknąć oba Cursor
i db
obiekt.