sql >> Base de Datos >  >> RDS >> SQLite

¿Cómo saber que el usuario está presente en la base de datos Sqlite usando Android?

El problema con su código es no que pasa los argumentos como Integer (no lo hace), pero que los argumentos no se reconocen como TEXT literales porque no están encerrados entre comillas simples, por lo que SQLite cree que son nombres de columna.

La forma recomendada de pasar los parámetros a rawQuery() es esto:

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
}

Los marcadores de posición ? tomará sus valores de los elementos correspondientes de la matriz pasados ​​como segundo argumento de rawQuery() y no necesita concatenar las comillas simples para evitar el riesgo de inyección de sql.
Después de eso y antes de la declaración de retorno, debe cerrar ambos Cursor y el db objeto.