我正在尝试通过 CursorLoader 从 sqlite db 查询数据。当我浏览 Android 开发者网站中的文档时,我找不到限制查询。
CursorLoader(Context context, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
如何在 CursorLoader 中实现限制?
提前致谢
黑客的方式:
String sortOrder = "ROWID LIMIT 5"
这将导致ORDER BY ROWID LIMIT 5
. ROWID http://www.sqlite.org/lang_createtable.html#rowid将按 SQLite 保留的隐式行 id 进行排序 - 非常接近于根本不指定排序顺序时发生的情况。
这并不是滥用订单参数不检查提供的值是否只是有效订单类型的事实。一种缓冲区溢出攻击。
更好的方法是定义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");
两种方法只有在以下情况下才有效ContentProvider
与上述限制尝试兼容。实际上没有明确定义的方法来限制或从数据中选择某些数据ContentProvider
. Each ContentProvider
附带其自己的合同,因此上述内容并不适用于每个提供商。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)