SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como descobrir que o usuário está presente no banco de dados SQLite usando o Android?


O problema com seu código não que você passa os argumentos como Integer (você não passa), mas que os argumentos não são reconhecidos como TEXT literais porque não estão entre aspas simples, então o SQLite pensa que são nomes de colunas.



A maneira recomendada de passar os parâmetros para rawQuery() é isto:
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
}

Os espaços reservados ? pegará seus valores dos itens correspondentes do array passado como o segundo argumento de rawQuery() e você não precisa concatenar as aspas simples para evitar o risco de injeção de sql.
Depois disso e antes da instrução return você deve fechar tanto o Cursor e o db objeto.