当我需要getContentResolver().query()
时,是否可以使用sum(column)
?
OR
我是否必须对db handle进行原始查询?
答案 0 :(得分:6)
在向ContentResolver.query
提供列数组时,使用sum()
函数包装列名称
String[] columns = new String[] { "sum(" + columnName + ")" };
Cursor cursor = getContentResolver().query(
content_uri,
columns,
selection,
selectionArgs,
sort
);
cursor.moveToFirst();
int columnSum = cursor.getInt(0);
答案 1 :(得分:3)
好吧,似乎无法使用getContentResolver().query()
。
我必须得到数据库连接并生成rawQuery
。
ContentProviderClient client = getContentResolver().acquireContentProviderClient(AUTHORITY);
SQLiteDatabase dbHandle= ((MyContentProvider)client.getLocalContentProvider()).getDbHandle();
Cursor cursor = dbHandle.rawQuery("SELECT sum("+COLUM_NNAME+") FROM "+TABLE_NAME +" WHERE "+WHERE_CLAUSE , null);
cursor.moveToFirst();
int cnt = cursor.getInt(0);
cursor.close();
cursor.deactivate();
client.release();
答案 2 :(得分:3)
接受的答案错误
内容提供者可能是
String[] columns = new String[] { "sum(" + columnName + ")" };
Cursor cursor = getContentResolver().query(
content_uri,
columns,
selection,
selectionArgs,
sort
);
int columnSum = cursor.getInt(0);
只有错误汤姆做的是他忘了做:
cursor.moveToFirst();
答案 3 :(得分:0)
您可以使用“simpleQueryForLong()” - 方法。