android内容提供者总和查询

发布于 2024-11-04 07:43:04 字数 127 浏览 0 评论 0原文

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

或者

我是否必须对数据库句柄进行原始查询?

Is it possible to use getContentResolver().query() when I want sum(column)?

OR

Do I have to make raw query to db handle?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

莫言歌 2024-11-11 07:43:04

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);

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);
一身仙ぐ女味 2024-11-11 07:43:04

好吧,看来使用 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();

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();
稀香 2024-11-11 07:43:04

接受的答案是错误的

内容提供商可能会这样

 String[] columns = new String[] { "sum(" + columnName + ")" };

    Cursor cursor = getContentResolver().query(
        content_uri,
        columns,
        selection,
        selectionArgs,
        sort
    );
int columnSum = cursor.getInt(0);

汤姆犯的唯一错误是他忘记了:

cursor.moveToFirst();

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();
如果没有你 2024-11-11 07:43:04

您可以使用 'simpleQueryForLong()'-方法。

You could use the 'simpleQueryForLong()'-Method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文