从 SQLite 数据库中删除所有已完成的项目

Deleting all done items from a SQLite databse

我需要从待办事项列表数据库中删除已经完成的项目 (IS_ACTIVE = 1),但我的代码只是清除了数据库。我的错误是什么? Database example

    private val todoTable = "TODO_TABLE"
    private val isActive = "IS_ACTIVE"

    fun deleteDone(){
        val db = this.writableDatabase
        val sqlSelectQuery = "SELECT * FROM $todoTable"
        val cursor = db.rawQuery(sqlSelectQuery, null)
        if(cursor.moveToFirst()){
            do {
                val sqlDeleteQuery = "DELETE FROM $todoTable WHERE $isActive = ${cursor.getInt(2)} = 1"
                db.execSQL(sqlDeleteQuery)
            }while(cursor.moveToNext())
        }
        db.close()
    }

尝试使用以下查询。

 if(cursor.getInt(2)==1){
 val sqlDeleteQuery = "DELETE FROM $todoTable WHERE $isActive = ${cursor.getInt(2)}" 
 db.execSQL(sqlDeleteQuery)
}

不需要select行IS_ACTIVE = 1然后循环删除它们1个1。
使用方法delete()全部删除:

fun deleteDone(){
    val db = this.writableDatabase
    db.delete(todoTable, isActive + " = 1", null)
    db.close()
}

此处,delete() 的第二个参数是 WHERE 子句,sql 语句将被解释为:

DELETE FROM TODO_TABLE WHERE IS_ACTIVE = 1

或更简单:

fun deleteDone(){
    val db = this.writableDatabase
    db.delete(todoTable, isActive, null)
    db.close()
}

因为:

WHERE IS_ACTIVE

相当于:

WHERE IS_ACTIVE = 1