从 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
我需要从待办事项列表数据库中删除已经完成的项目 (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