SQLite
 sql >> Database >  >> RDS >> SQLite

Come scoprire che l'utente è presente nel database Sqlite utilizzando Android?

Il problema con il tuo codice è non che passi gli argomenti come Integer (non lo fai), ma che gli argomenti non siano riconosciuti come TEXT letterali perché non sono racchiusi tra virgolette singole, quindi SQLite pensa che siano nomi di colonne.

Il modo consigliato per passare i parametri a rawQuery() è questo:

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
}

I segnaposto ? prenderà i loro valori dagli elementi corrispondenti dell'array passati come 2° argomento di rawQuery() e non è necessario concatenare le virgolette singole in modo da evitare il rischio di sql injection.
Dopo questo e prima dell'istruzione return devi chiudere entrambi i Cursor e il db oggetto.