Android Studio中如何通过按钮点击删除整个SQLite表
实现「Delete All」清空全表记录功能
仅需修改两处代码即可完成需求,建议增加二次确认逻辑避免用户误操作:
1. 给DatabaseHelper添加全量删除方法
在现有deleteData单条删除方法下方,补充如下方法:
// 删除表内所有数据,返回被删除的记录总数 public Integer deleteAllEntries() { SQLiteDatabase db = this.getWritableDatabase(); // where条件传null即匹配表中所有行,不会删除表结构 return db.delete(TABLE_NAME, null, null); }
注意:不要用
DROP TABLE语句实现该功能,DROP TABLE会直接删除整张表的结构,后续新增数据时会抛出表不存在的异常。上述方法仅清空表内所有行数据,保留表结构,完全匹配你的需求。
2. 在MainActivity中绑定全删按钮的点击事件
首先在onCreate生命周期方法中,现有方法调用的位置补充全删逻辑的初始化调用:
addData(); deleteEntry(); deleteAllEntries(); // 新增这行初始化调用 updateData(); viewTable();
之后在deleteEntry方法外部,新增全删按钮的点击逻辑,内置二次确认弹窗:
// 全量删除记录逻辑 public void deleteAllEntries() { DeleteAllButton.setOnClickListener(view -> { // 弹出确认弹窗防止误操作 new AlertDialog.Builder(MainActivity.this) .setTitle("操作确认") .setMessage("确定要删除所有保存的位置记录吗?删除后无法恢复。") .setPositiveButton("确认删除", (dialogInterface, i) -> { Integer deletedCount = locationDb.deleteAllEntries(); if (deletedCount > 0) { Toast.makeText(MainActivity.this, "删除成功,共清除" + deletedCount + "条记录", Toast.LENGTH_SHORT).show(); editID.setText(""); } else { Toast.makeText(MainActivity.this, "当前没有可删除的记录", Toast.LENGTH_SHORT).show(); } }) .setNegativeButton("取消", null) .show(); }); }
如果不需要二次确认,可以直接把AlertDialog相关代码去掉,在点击事件里直接调用locationDb.deleteAllEntries()并弹提示即可,但非常建议保留确认步骤,避免用户误点丢失所有数据。
内容的提问来源于stack exchange,提问作者CelticGothGF96
相关产品推荐
相关产品推荐

