从 SQLite 数据库中删除所有已完成的项目
Posted
技术标签:
【中文标题】从 SQLite 数据库中删除所有已完成的项目【英文标题】:Deleting all done items from a SQLite databse 【发布时间】:2021-09-06 04:24:28 【问题描述】:我需要从待办事项列表数据库中删除已完成的项目 (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()
【问题讨论】:
【参考方案1】:无需选择带有IS_ACTIVE = 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
【讨论】:
【参考方案2】:试试下面的查询。
if(cursor.getInt(2)==1)
val sqlDeleteQuery = "DELETE FROM $todoTable WHERE $isActive = $cursor.getInt(2)"
db.execSQL(sqlDeleteQuery)
【讨论】:
以上是关于从 SQLite 数据库中删除所有已完成的项目的主要内容,如果未能解决你的问题,请参考以下文章
如何从 recyclerview 和 sqlite 中删除项目? [复制]