【问题标题】:How to make sure that an insert command completed and the table has been updated?如何确保插入命令已完成并且表已更新?
【发布时间】:2016-02-28 18:41:46
【问题描述】:

假设有 2 个线程,一个线程通过 ContentProvider 向数据库插入数据。
在插入语句之后,回调一个方法在另一个线程中查询数据库。
但是,有时查询可能会在表更新之前完成。
因此无法获取新数据。

有没有办法让插入命令真正完整?
然后调用查询方法会返回新插入的数据。

【问题讨论】:

  • 但是,有时查询可能在表更新之前完成。您指的是哪个查询?插入还是获取?
  • @ZahanSafallwa 获取。获取时,插入后表不更新。
  • insert()update()delete() 方法返回受影响记录的数量。
  • @BobMalooga 是的,我知道。但这能帮我解决这个问题吗?
  • 如果受影响的记录为> 0,则命令成功。

标签: android multithreading sqlite android-sqlite


【解决方案1】:

insert() 方法在该线程中返回时,插入完成。如果另一个线程依赖于它,那么您必须从第一个线程向第二个线程发送消息。

【讨论】:

  • 其实我是用loader来自动查询数据库有什么变化的。并使用AsyncQueryHandler 插入。不知道后台执行的进程是否如你所说:当我调用getContext().getContentResolver().notifyChange(uri, null);时,数据库已经真正更新或正在执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多