【问题标题】:Limit Records fetched in Android (Sqlite database)限制在 Android 中获取的记录(Sqlite 数据库)
【发布时间】:2011-02-11 02:25:24
【问题描述】:

我正在尝试从收件箱、已发送项目和草稿中获取短信。我想为我的列表视图进行分页,因为我必须在页面/块中获取记录。

我不熟悉 sqlite,这是我理解的 android 用来存储数据的数据库。有人可以告诉我如何限制使用 contentResolver.query 获取的记录数吗?

还有什么方法可以将 sqlite 数据库文件拉到我的机器上并在本地浏览/查询它以在我的机器上进行实验或查看数据?

还有其他更好的方式在android中实现分页吗?

谢谢

【问题讨论】:

    标签: sql android sqlite pagination


    【解决方案1】:

    根据Sqlite website,您可以在查询中使用LIMIT ... OFFSET ... 子句:

    【讨论】:

    • 这也是我使用的 - LIMIT。 SELECT * from mytable LIMIT 100
    【解决方案2】:

    对于任何偶然发现此答案并寻找将LIMIT 子句与OFFSET 结合使用的方法的人,我从this bug 发现Android 使用以下正则表达式来解析查询的限制子句:

    在framework/base/core/java/android/database/sqlite/SQLiteQueryBuilder.java中:

    使用以下 sLimitPattern 检查 LIMIT 子句。

    private static final Pattern sLimitPattern = Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?");
    

    请注意,正则表达式确实接受 offsetNumber,limitNumber 格式,即使它不直接接受 OFFSET 语句。

    【讨论】:

    • 很好的发现! :) 我相信这会有所帮助。
    【解决方案3】:

    似乎没有任何方法可以限制来自SmsProvider 的结果。但是,您实际上并不需要这样做,因为您使用 CursorAdapter 并且不要尝试将内容读入您自己的数据结构中。你试过吗?

    【讨论】:

    【解决方案4】:

    要拉取您的数据库以供查看,请在 SD 卡上制作一份副本,然后使用 adp pull 来获取它。

    【讨论】:

      猜你喜欢
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多