Is it possible to use getContentResolver().query()
when I want sum(column)
?
OR
Do I have to make raw query to db handle?
Is it possible to use getContentResolver().query()
when I want sum(column)
?
OR
Do I have to make raw query to db handle?
OK, it seems that its not possible using getContentResolver().query()
.
I had to get db connection and make 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();
When providing the array of columns to ContentResolver.query
, wrap the column name with the sum()
function
String[] columns = new String[] { "sum(" + columnName + ")" };
Cursor cursor = getContentResolver().query(
content_uri,
columns,
selection,
selectionArgs,
sort
);
cursor.moveToFirst();
int columnSum = cursor.getInt(0);
OK, it seems that its not possible using getContentResolver().query()
.
I had to get db connection and make 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();
ACCEPTED ANSWER IS WRONG
IT IS POSSIBLE IN CONTENTPROVIDER AS
String[] columns = new String[] { "sum(" + columnName + ")" };
Cursor cursor = getContentResolver().query(
content_uri,
columns,
selection,
selectionArgs,
sort
);
int columnSum = cursor.getInt(0);
Only mistake Tom did is he forget to do :
cursor.moveToFirst();
© 2022 - 2024 — McMap. All rights reserved.