您的问题在于SQL查询。使用此固定方法:
@SuppressLint("Range")
fun getLast(): Int {
val db = databaseHelper.readableDatabase
val cursor = db.rawQuery("SELECT MAX(id) AS max_id FROM sensor", null)
return if (cursor.moveToFirst()) {
val id = cursor.getInt(cursor.getColumnIndex("max_id"))
cursor.close()
id
} else {
cursor.close()
-1 // Default if no rows exist
}
}
关键修复:
-
查询更正:
使用SELECT MAX(id)作为MAX_id FROM传感器。
-
访问别名:
获取max_id而不是id。
-
光标管理:
始终关闭光标以避免内存泄漏。
对于新插入,您可以直接使用SQLite的insert()方法,该方法返回最后插入的ID:
val rowId = db.insert("sensor", null, contentValues)