Het probleem met uw code is niet dat u de argumenten als geheel getal doorgeeft (u niet), maar dat de argumenten niet worden herkend als TEXT
letterlijke waarden omdat ze niet tussen enkele aanhalingstekens staan, dus SQLite denkt dat het kolomnamen zijn.
De aanbevolen manier om de parameters door te geven aan rawQuery()
is dit:
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
}
De tijdelijke aanduidingen ?
zullen hun waarden halen uit de corresponderende items van de array die zijn doorgegeven als het 2e argument van rawQuery()
en u hoeft de enkele aanhalingstekens niet samen te voegen, zodat u het risico van sql-injectie vermijdt.
Daarna en vóór de return-instructie moet u zowel de Cursor
sluiten en de db
voorwerp.