Aki*_*lan 19 android android-cursorloader
我试图通过CursorLoader从sqlite db查询数据.当我浏览android开发者网站的文档时,我找不到限制查询.
CursorLoader(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
如何在CursorLoader中实现限制?
提前致谢
zap*_*apl 29
hackish方式:
String sortOrder = "ROWID LIMIT 5"
Run Code Online (Sandbox Code Playgroud)
这将导致ORDER BY ROWID LIMIT 5.ROWID将按SQLite保留的隐式行ID进行排序 - 非常接近于根本不指定排序oder时发生的行.并不是说这是滥用order参数不检查提供的值是否只是有效订单类型的事实.一种缓冲区溢出攻击.
更好的方法是定义Uri参数.
// query code
Uri queryUri = Uri.parse("content://what/ever/items");
queryUri = queryUri.buildUpon().appendQueryParameter("limit", "5").build();
// in ContentProvider
String limit = queryUri.getQueryParameter("limit");
Run Code Online (Sandbox Code Playgroud)
只有在ContentProvider与上述限制尝试兼容的情况下,这两种方法才有效.实际上没有明确定义的方法来限制或选择某些数据ContentProvider.每个ContentProvider都有它自己的合同,所以上面不适用于每个提供商.
| 归档时间: |
|
| 查看次数: |
6471 次 |
| 最近记录: |