内容提供者中的Android自定义方法获取表中的记录数?

标签 android database android-contentprovider

我有一个访问我的数据库的内容提供程序,如果您需要处理记录集,这很好,但我需要一个方法来返回一个表示表中记录数的整数

方法是这样的

public long getRecordCount(String TableName) {
    SQLiteDatabase mDatabase = mOpenHelper.getReadableDatabase();
    String sql = "SELECT COUNT(*) FROM " + TableName;
    SQLiteStatement statement = mDatabase.compileStatement(sql);
    long count = statement.simpleQueryForLong();
    return count;
}

但是我无法在内容提供程序中找到任何使用此方法(或任何其他不返回游标的方法)的方法,所以放置此方法的最佳位置在哪里以及如何调用它?

显然,我可以做一个非常糟糕的选择,即使用托管查询选择所有记录并使用 cursor.count 结果,但这是处理此特定要求的一种非常低效的方法

谢谢

最佳答案

您也可以简单地使用“count(*)”作为调用您的内容提供商 URI 的投影,如以下辅助方法所示

public static int count(Uri uri,String selection,String[] selectionArgs) {
  Cursor cursor = getContentResolver().query(uri,new String[] {"count(*)"},
      selection, selectionArgs, null);
  if (cursor.getCount() == 0) {
    cursor.close();
    return 0;
  } else {
    cursor.moveToFirst();
    int result = cursor.getInt(0);
    cursor.close();
    return result;
  }
}

关于内容提供者中的Android自定义方法获取表中的记录数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8041797/

相关文章:

android - 如何在 Splashscreen API 中删除我的启动画面图标周围的圆形 mask ?

android - 征求意见 - 我应该如何将 Facebook SDK 集成到 Android 的 Clean Architecture 中?

mysql - 将本体连接到预先存在的数据库

android - 从另一个应用程序访问自定义内容提供者

安卓 : Expandable ListView Adapter from Database/ContentProvider/ContentResolver

安卓账户管理器 : peekAuthToken

java - 在 Android 上的单独线程上获取 GL10 实例

MySQL可重复读隔离级别和丢失更新现象

java - 使用 jdbc 的 SQL 语法错误

android - 是否可以引用未保存在 res 文件夹中的 strings.xml 文件?