如何在我的内容提供商中获得_count?

pup*_*eno 38 android count android-contentprovider

我该怎么做才能让我的内容提供商返回带有记录数的_count列?文档说这是自动的,但也许它只涉及一些内置的内容提供者.对数据库运行查询似乎不会返回它.

sau*_*abh 126

如果您正在使用contentProvider,那么您必须这样做count(*) AS count.

如果使用cursor.getCount(),那将不如上述方法有效.随着cursor.getCount()你获取所有记录只是为了获得计数.整个代码应如下所示 -

 Cursor countCursor = getContentResolver().query(CONTENT_URI,
                new String[] {"count(*) AS count"},
                null,
                null,
                null);

        countCursor.moveToFirst();
        int count = countCursor.getInt(0);
Run Code Online (Sandbox Code Playgroud)

这有效的原因是因为android需要定义列名.

  • 无法保证您的contentprovider由sql数据库支持. (7认同)

Wil*_*ill 13

如果您使用ContentProvider.query()Cursor是退货.调用Cursor.getCount()以获取返回游标中的记录数.

  • 这个问题是它实际上执行查询并为记录等分配内存.如果SQL语句"SELECT COUNT(*)FROM TABLE",有一种更好的计数方法...我会继续寻找对于这个替代答案. (36认同)
  • 您可以在不获取所有记录的情况下获取计数.从我这里看到以下答案.. (5认同)