android内容提供者总和查询

时间:2011-05-02 07:01:45

标签: android android-contentprovider

当我需要getContentResolver().query()时,是否可以使用sum(column)

OR

我是否必须对db handle进行原始查询?

4 个答案:

答案 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()” - 方法。