SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wie kann man mit Android herausfinden, ob der Benutzer in der Sqlite-Datenbank vorhanden ist?

Das Problem mit Ihrem Code ist nicht dass Sie die Argumente als Integer übergeben (das tun Sie nicht), aber dass die Argumente nicht als TEXT erkannt werden Literale, weil sie nicht in einfache Anführungszeichen eingeschlossen sind, sodass SQLite sie für Spaltennamen hält.

Die empfohlene Art, die Parameter an rawQuery() zu übergeben ist das:

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
}

Die Platzhalter ? nehmen ihre Werte aus den entsprechenden Elementen des Arrays, das als zweites Argument von rawQuery() übergeben wird und Sie müssen die einfachen Anführungszeichen nicht verketten, um das Risiko einer SQL-Einschleusung zu vermeiden.
Danach und vor der return-Anweisung müssen Sie beide Cursor schließen und die db Objekt.