我有一个访问我的数据库的内容提供程序,如果您需要处理记录集,这很好,但我需要一个方法来返回一个表示表中记录数的整数
方法是这样的
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/