sql >> Databasteknik >  >> RDS >> SQLite

Hur tar man reda på att användaren finns i SQLite Database med Android?

Problemet med din kod är inte att du skickar argumenten som heltal (det gör du inte), men att argumenten inte känns igen som TEXT bokstaver eftersom de inte är omslutna av enkla citattecken, så SQLite tror att de är kolumnnamn.

Det rekommenderade sättet att skicka parametrarna till rawQuery() är detta:

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
}

Platshållarna ? kommer att ta sina värden från motsvarande objekt i arrayen som skickas som det andra argumentet för rawQuery() och du behöver inte sammanfoga de enskilda citattecken så att du undviker risken för sql-injektion.
Efter det och före retursatsen måste du stänga både Cursor och db objekt.



  1. Vad orsakar Mer känns inte igen... fel när Postgresql 11 körs på en Windows-maskin?

  2. SQL Server 2008 Tom sträng mot utrymme

  3. SQL Server-inställning – allt handlar om mätning

  4. Finns det något som en zip()-funktion i PostgreSQL som kombinerar två arrayer?