Added overload methods for DatabaseUtils.queryNumEntries

Now you can filter the count statement with a selection
and selection args
UnitTests for this new methods are added to the cts project

Change-Id: Id9233aec0eaac08839041ae7cbaba203470ad3d8
This commit is contained in:
Christian Mehlmauer
2010-06-16 22:56:07 +02:00
committed by Jean-Baptiste Queru
parent ec58dff066
commit e7731f0a7f
2 changed files with 71 additions and 11 deletions

View File

@ -52633,6 +52633,42 @@
<parameter name="table" type="java.lang.String">
</parameter>
</method>
<method name="queryNumEntries"
return="long"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="db" type="android.database.sqlite.SQLiteDatabase">
</parameter>
<parameter name="table" type="java.lang.String">
</parameter>
<parameter name="selection" type="java.lang.String">
</parameter>
</method>
<method name="queryNumEntries"
return="long"
abstract="false"
native="false"
synchronized="false"
static="true"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="db" type="android.database.sqlite.SQLiteDatabase">
</parameter>
<parameter name="table" type="java.lang.String">
</parameter>
<parameter name="selection" type="java.lang.String">
</parameter>
<parameter name="selectionArgs" type="java.lang.String[]">
</parameter>
</method>
<method name="readExceptionFromParcel"
return="void"
abstract="false"
@ -243064,7 +243100,7 @@
<method name="activeCount"
return="int"
abstract="false"
native="false"
native="true"
synchronized="false"
static="false"
final="false"

View File

@ -50,8 +50,6 @@ public class DatabaseUtils {
private static final boolean DEBUG = false;
private static final boolean LOCAL_LOGV = DEBUG ? Config.LOGD : Config.LOGV;
private static final String[] countProjection = new String[]{"count(*)"};
/**
* Special function for writing an exception result at the header of
* a parcel, to be used when returning an exception from a transaction.
@ -604,14 +602,40 @@ public class DatabaseUtils {
* @return the number of rows in the table
*/
public static long queryNumEntries(SQLiteDatabase db, String table) {
Cursor cursor = db.query(table, countProjection,
null, null, null, null, null);
try {
cursor.moveToFirst();
return cursor.getLong(0);
} finally {
cursor.close();
}
return queryNumEntries(db, table, null, null);
}
/**
* Query the table for the number of rows in the table.
* @param db the database the table is in
* @param table the name of the table to query
* @param selection A filter declaring which rows to return,
* formatted as an SQL WHERE clause (excluding the WHERE itself).
* Passing null will count all rows for the given table
* @return the number of rows in the table filtered by the selection
*/
public static long queryNumEntries(SQLiteDatabase db, String table, String selection) {
return queryNumEntries(db, table, selection, null);
}
/**
* Query the table for the number of rows in the table.
* @param db the database the table is in
* @param table the name of the table to query
* @param selection A filter declaring which rows to return,
* formatted as an SQL WHERE clause (excluding the WHERE itself).
* Passing null will count all rows for the given table
* @param selectionArgs You may include ?s in selection,
* which will be replaced by the values from selectionArgs,
* in order that they appear in the selection.
* The values will be bound as Strings.
* @return the number of rows in the table filtered by the selection
*/
public static long queryNumEntries(SQLiteDatabase db, String table, String selection,
String[] selectionArgs) {
String s = (!TextUtils.isEmpty(selection)) ? " where " + selection : "";
return longForQuery(db, "select count(*) from " + table + s,
selectionArgs);
}
/**