SQLite
 sql >> Base de données >  >> RDS >> SQLite

Comment savoir si l'utilisateur est présent dans la base de données Sqlite en utilisant Android ?

Le problème avec votre code n'est pas que vous passez les arguments en tant que Integer (vous ne le faites pas), mais que les arguments ne sont pas reconnus en tant que TEXT car ils ne sont pas entourés de guillemets simples, donc SQLite pense qu'il s'agit de noms de colonnes.

La méthode recommandée pour transmettre les paramètres à rawQuery() est-ce :

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
}

Les espaces réservés ? prendront leurs valeurs des éléments correspondants du tableau passé en 2ème argument de rawQuery() et vous n'avez pas besoin de concaténer les guillemets simples pour éviter le risque d'injection sql.
Après cela et avant l'instruction de retour, vous devez fermer les deux Cursor et la db objet.