sql >> Database >  >> RDS >> SQLite

Hoe erachter te komen of de gebruiker aanwezig is in Sqlite Database met Android?

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.



  1. Gebruik meerdere conflict_targets in ON CONFLICT-clausule

  2. MySQL NDB-cluster implementeren en beheren met ClusterControl

  3. Is er een MySQL-optie/-functie om de geschiedenis van wijzigingen in records bij te houden?

  4. Wat is een cursor in SQL en hoe implementeer je deze?