【问题标题】:choosing between requery or firing the query again in SQLite在 SQLite 中选择重新查询或再次触发查询
【发布时间】:2010-06-19 05:17:21
【问题描述】:

我一直在使用 SQLite 数据库,有一种情况是我有一个列表,其中显示了表“table1”的所有“名称”字段数据。现在我有一个按钮可以在“table1”中插入数据。该列表使用一个简单的游标适配器填充,该适配器传递了一个填充有数据的游标“cursor1”。 “cursor1”是使用 SQLite 查询 - “SELECT * FROM table1”准备的。现在我插入数据的那一刻,我也需要更新列表。

我的问题是——

  1. 适配器会自动感知数据库变化吗(我猜不会)?
  2. 使用cursor1.requery() 是正确的或者我应该使用cursor1 = db.query("table1", null, null, null, null, null, null);

如果您能阐明哪个 1 更好以及在哪种情况下会有所帮助。因为对于我上面解释的情况,requery() 命令没有给出有效的结果,而后面的 1 工作正常。仍然无法理解问题可能是什么。

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    适配器会感知数据库吗 自动改变(我猜不是)?

    不,Adapter 不会自动感知数据库更改。

    使用 cursor1.requery() 是正确的或 我应该使用 cursor1 = db.query("table1", null, null, null, 空,空,空);

    使用requery()Here is a sample project 来自我展示该技术的一本书。

    【讨论】:

    • 非常感谢马克!但我使用代码在“table1”中插入一些值,然后调用重新查询函数,这没有锻炼。该表最初是空的,后来我插入了该值并且重新查询没有返回任何结果。但是当我使用 cursor1 = db.query("table1", null, null, null, null, null, null); ,它返回了我的值......我应该从中理解什么?请对此有所了解...
    • 好像requery方法已经被弃用了:developer.android.com/reference/android/database/Cursor.html
    • @tjb:是的,这个答案来自两年多以前。在 AsyncTask 中运行新查询并换入新的 Cursor,或使用 Loader 框架。
    猜你喜欢
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多