SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Jak sprawdzić, czy użytkownik jest obecny w bazie danych Sqlite za pomocą Androida?

Problem z Twoim kodem nie że przekazujesz argumenty jako liczby całkowite (nie przekazujesz), ale argumenty nie są rozpoznawane jako TEXT literały, ponieważ nie są ujęte w pojedyncze cudzysłowy, więc SQLite myśli, że są to nazwy kolumn.

Zalecany sposób przekazywania parametrów do rawQuery() jest to:

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
}

Symbole zastępcze ? pobierze ich wartości z odpowiednich elementów tablicy przekazanej jako drugi argument rawQuery() i nie musisz łączyć pojedynczych cudzysłowów, aby uniknąć ryzyka wstrzyknięcia sql.
Po tym i przed instrukcją return musisz zamknąć oba Cursor i db obiekt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaktualizować dane w niestandardowym oknie dialogowym

  2. Ujmij ciągi znaków w pojedyncze cudzysłowy w wynikach zapytania SQLite

  3. Jak działa SQLite Max()

  4. SQLite JSON_REMOVE()

  5. android.database.sqlite.SQLiteCantOpenDatabaseException:nieznany błąd (kod 14):Nie można otworzyć bazy danych