Masalah dengan kode Anda tidak bahwa Anda meneruskan argumen sebagai Integer (tidak), tetapi argumen tersebut tidak dikenali sebagai TEXT
literal karena tidak diapit oleh tanda kutip tunggal, jadi SQLite menganggapnya sebagai nama kolom.
Cara yang disarankan untuk meneruskan parameter ke rawQuery()
apakah ini:
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
}
Placeholder ?
akan mengambil nilainya dari item yang sesuai dari larik yang diteruskan sebagai argumen ke-2 dari rawQuery()
dan Anda tidak perlu menggabungkan tanda kutip tunggal sehingga Anda menghindari risiko injeksi sql.
Setelah itu dan sebelum pernyataan kembali, Anda harus menutup kedua Cursor
dan db
objek.