Problém s vaším kódem není že předáte argumenty jako Integer (není), ale že argumenty nejsou rozpoznány jako TEXT
literály, protože nejsou uzavřeny v jednoduchých uvozovkách, takže SQLite si myslí, že jde o názvy sloupců.
Doporučený způsob předání parametrů do rawQuery()
je toto:
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
}
Zástupné symboly ?
převezme jejich hodnoty z odpovídajících položek pole předávaného jako 2. argument funkce rawQuery()
a nemusíte spojovat jednoduché uvozovky, abyste se vyhnuli riziku vložení SQL.
Po tomto a před příkazem return musíte zavřít oba Cursor
a db
objekt.