Vấn đề với mã của bạn là không rằng bạn chuyển các đối số dưới dạng Số nguyên (bạn thì không), nhưng các đối số đó không được nhận dạng là TEXT
các chữ bởi vì chúng không được đặt trong dấu ngoặc kép, vì vậy SQLite nghĩ rằng chúng là tên cột.
Cách đề xuất để chuyển các tham số tới rawQuery()
đây có phải là:
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
}
Các trình giữ chỗ ?
sẽ lấy các giá trị của chúng từ các mục tương ứng của mảng được truyền làm đối số thứ 2 của rawQuery()
và bạn không cần phải nối các dấu nháy đơn lẻ để tránh rủi ro bị chèn sql.
Sau đó và trước câu lệnh trả về, bạn phải đóng cả Cursor
và db
đối tượng.