题
我有一个URL指向的内容,我需要得到包含在其中的一列最高值。是否有将实现这一目标还是我必须这样做的任何聚合函数手动?
解决方案
如果您要查询的Android的内容提供商,你应该能够通过传递MAX(COLUMN_NAME)
到ContentResolver.query
的选择参数来实现这一点:
getContentResolver().query(uri, projection, "MAX(COLUMN_NAME)", null, sortOrder);
其中URI是内容提供商的地址。这应返回的单列与COLUMN_NAME的最高值。
其他提示
Android的数据库使用SQLite,所以SELECT MAX(thecolumn) FROM TheTable
应该工作,就像任何其他的SQLite实现(或与此有关的任何其他SQL,“伊特”或不;-)。 (如果你不使用android.database
你最好指定的什么的你正在使用替代; - )。
在该适合我。
基于@Reto Meier和@Florian冯Stosch的响应
public static long getMaxId(Context context) {
long maxId = 0;
Cursor maxCursor = context.getContentResolver().query(
ProviderContentContract.CONTENT_URI,
new String[]{"MAX(" + Table._ID + ")"},
null,
null,
null);
if (maxCursor != null && maxCursor.moveToFirst()) {
maxId = maxCursor.getInt(0);
maxCursor.close();
}
return maxId;
}
不隶属于 StackOverflow