在Android中获取的限制记录(Sqlite数据库)

问题描述:

我试图从收件箱,发送的项目和草稿中获取短信。我想为我的列表视图做一个分页,因为我必须以页/块的形式获取记录。在Android中获取的限制记录(Sqlite数据库)

我不熟悉sqlite,这是我明白android用来存储数据的数据库。有人能告诉我如何通过使用contentResolver.query限制我获取的记录数量?

还有什么办法将sqlite数据库文件拖到我的机器上,并在本地浏览/查询它以试验或在我的机器上查看数据?

是否有任何其他更好的方法来实现分页在android?

感谢

似乎没有什么办法来限制您的结果从SmsProvider。但是,如果您使用CursorAdapter,并且不尝试将内容读取到您自己的数据结构中,则不应该真的需要。你试过这个吗?

+0

请你指点一下如何使用CursorAdapter的一些例子? – Priyank 2010-04-23 04:02:45

+0

这有一个很好的http://thinkandroid.wordpress.com/2010/01/11/custom-cursoradapters/ – zapping 2010-04-23 06:06:06

按照Sqlite website,您可以在查询中使用LIMIT ... OFFSET ...条款:

+1

这也是我使用的 - LIMIT。 SELECT * from mytable LIMIT 100 – 2010-04-22 14:36:35

拉你的数据库查看,做它的一个副本,在SD卡上,然后用adp拉来获得它。

对于任何人碰到这个答案寻找一种方式来使用LIMIT条款与OFFSET磕磕绊绊,我从this bug发现,Android使用下面的正则表达式来解析查询的限制子句:

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

LIMIT子句用下面的sLimitPattern检查。

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

注意,正则表达式不接受格式offsetNumber,limitNumber即使它不直接接受OFFSET声明。

+0

很好的发现! :)这肯定会有帮助。 – Priyank 2011-03-16 05:52:50