Limit the query in CursorLoader

前端 未结 3 1072
渐次进展
渐次进展 2021-02-04 03:06

I am trying to query data from sqlite db through CursorLoader. When i go through the documentation in android developer website, i can\'t find the limit query.

Cu

3条回答
  •  伪装坚强ぢ
    2021-02-04 03:47

    The hackish way:

    String sortOrder = "ROWID LIMIT 5"
    

    which will result in ORDER BY ROWID LIMIT 5. ROWID would sort by the implicit row ids that SQLite keeps - very close to what happens when you don't specify a sort oder at all. Not that this is abusing the fact that the order parameter does not check if the supplied value is just a valid order type. Kind of a buffer overflow attack.

    A better way would be to define Uri parameters.

    // query code
    Uri queryUri = Uri.parse("content://what/ever/items");
    queryUri = queryUri.buildUpon().appendQueryParameter("limit", "5").build();
    
    // in ContentProvider
    String limit = queryUri.getQueryParameter("limit");
    

    Both approaches will only work if the ContentProvider is compatible with above attempts to limit. There is actually no well-defined way to limit or select certain data from a ContentProvider. Each ContentProvider comes with it's own contract so above will not work with every provider.

提交回复
热议问题