当前位置: 首页 > 面试题库 >

在小吃店操作中,如何确定从数据库中永久删除软删除的记录是安全的?

韩善
2023-03-14
问题内容

我正在android中使用Snackbar,并且已经实现了一个操作,以便用户可以撤消该操作(该操作正在清除列表视图中的所有项目)。已经完成将项目删除并添加回列表视图的工作,并且工作正常。

我的问题是,项目存储在sqlite数据库中,如何从表中删除项目?(我怎么知道用户还没有单击撤消按钮,所以我可以从数据库中完全删除数据)。

这是 OnOptionsItemSelcted()中* 的代码 *

case R.id.action_clear:
        final List<Word> temp = new ArrayList<Word>(data);
        data.clear();
        adapter.notifyDataSetChanged();
        View view = findViewById(R.id.layoutFavWords);
        Snackbar.make(view,"Deleted Saved Selection.", Snackbar.LENGTH_LONG).
        setAction("Undo", new OnClickListener() {

            @Override
            public void onClick(View v) {
                for(Word word:temp)
                    data.add(word);
                adapter.notifyDataSetChanged(); 
            }

        }).show();
        break;

因此,如果用户在快餐栏的可见期间未单击“撤消”按钮,那么我需要从数据库中永久删除数据。

有什么解决办法吗?


问题答案:

据我所知,这是设计使然。你应该:

  • 用户点击删除按钮后立即删除该项目;
  • 将其临时存储在类变量中;
  • 如果用户点击“撤消”,则将该项目再次添加到数据库中。

这种方法更安全,更可靠。您不应该等待小吃吧被解雇,因为这种动作甚至都不会发生。试想一下,当快餐栏仍处于打开状态时,用户会强制退出该应用程序:是否应删除该项目?这应该。

更值得信赖的消息来源是Ian Lake的g + post(由于G +弃用而被删除)。在评论中,您可以阅读:

您希望您的UI立即做出反应(而不是等到快餐栏消失)-大多数系统(尤其是那些同步到外部服务器的系统)都具有“软删除”的概念,其中将所有内容标记为已删除。在这些情况下,撤消操作将只是取消标记该记录为已删除。即使用户在点心栏完成之前离开应用程序,该系统也能正常工作(您不能假设点心栏将始终完成其动画!)。

最简单的方法是将记录临时保存在其他位置(甚至是局部变量),然后在碰巧单击“撤消”按钮时将其重新插入。



 类似资料:
  • 问题内容: 故事 我将编写一些代码来管理应用程序中已删除的项目,但是我将对其进行软删除,以便在需要时可以将其返回。在隐藏或删除项目时,我有一个层次结构要尊重我的应用程序的逻辑。 我顺理成章地将我的物品放在三个容器中,分别放入国家,城市,地区和品牌。每个项目都应该属于一个国家,城市,地区和品牌。现在,如果我删除了一个国家,则应该删除属于给定国家的城市,地区,品牌和商品。如果我删除了该城市,它还应该删

  • 问题内容: 我正在使用php,mysql和ajax从表中删除记录。问题是,在MySQL_query中,它没有获取显示为“ id = undefined”的ID,我试图将ID传递给查询,但我不知道我哪里出了错,我试图打印MySQL的节目 谁能告诉我如何通过身份证…谢谢 我的阿贾克斯 我的HTML delete.php 问题答案: 您ID的索引是1,即第二个索引。不是2。

  • 问题内容: 使用rails或mysql查询删除mysql数据库中重复记录的最佳方法是什么? 问题答案: 您可以通过以下方式将不同的记录复制到新表中:

  • 这里是将从其中删除记录的index.jsp文件。 index.jsp

  • 是否可以从Stripe中删除付款方式?我似乎找不到文档中描述的功能。您可以创建一种付款方式,将其附加到客户,并将其与该客户分离,但如何从Stripe的系统中完全删除该付款方式? 如果你不能,那就意味着一旦你把你的信用卡信息发给Stripe,你就再也收不回来了…

  • 从android工作室按特定值删除记录的适当代码是什么。 必需:如果starCount字段等于0,则删除所有记录。