在contentProvider中选择前n行

时间:2011-04-08 09:52:19

标签: android where android-contentprovider

我选择了这个:

 final Cursor cursorConversations = getContentResolver().query(
        Uri.parse("content://gmail-ls/conversations/" + Uri.encode(mailAddress)),
        null, null, null, BaseColumns._ID + " DESC");

 ContentQueryMap mQueryMap 
        = new ContentQueryMap(cursorConversations, BaseColumns._ID, true, null);

使用ContentQueyMap,我可以缓存Cursor数据并在Cursor关闭的情况下迭代它(我需要它来提高性能)。

现在,我想要选择Corsor只检索前五十行。在mQueryMap.getRows().entrySet()中循环50次的解决方案是不对的:我不希望mQueryMap获取Cursor的所有行,但只需要前50行。

有什么想法吗?是否存在一个只能获得前n行的where子句?

2 个答案:

答案 0 :(得分:14)

你可以做到

final Cursor cursorConversations = getContentResolver().query(
    Uri.parse("content://gmail-ls/conversations/" + Uri.encode(mailAddress)),
    null, null, null, BaseColumns._ID + " DESC " + " LIMIT 5");
在您的SORT之后

“LIMIT x”。

干杯

答案 1 :(得分:0)

SELECT * FROM Table_Name LIMIT 5;

这对sqlite有效。尝试添加" LIMIT 5"到你的where子句。 (我还没试过)