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

Hvordan finder man ud af, at brugeren er til stede i Sqlite-databasen ved hjælp af Android?

Problemet med din kode er ikke at du sender argumenterne som heltal (det gør du ikke), men at argumenterne ikke genkendes som TEXT bogstaver, fordi de ikke er omgivet af enkelte anførselstegn, så SQLite tror, ​​de er kolonnenavne.

Den anbefalede måde at overføre parametrene til rawQuery() er dette:

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
}

Pladsholderne ? vil tage deres værdier fra de tilsvarende elementer i arrayet, der er sendt som det 2. argument for rawQuery() og du behøver ikke at sammenkæde de enkelte anførselstegn, så du undgår risikoen for sql-injektion.
Derefter og før returneringserklæringen skal du lukke både Cursor og db objekt.



  1. Opret en Multi-Statement Table-Valued Function (MSTVF) i SQL Server

  2. AFTER LOGON(Oracle) trigger i PostgreSQL med udvidelse – login_hook

  3. 10 nyttige tips om MySQL-indstilling af ydeevne

  4. Driveren kunne ikke etablere en sikker forbindelse til SQL Server ved at bruge Secure Sockets Layer (SSL) kryptering