2011-05-02 17 views

Respuesta

3

OK, parece que no es posible usar getContentResolver().query(). Tuve que conectarme a db y hacer 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(); 
+0

¿Ha probado en el ICS? – SarjanWebDev

6

Cuando se proporciona la matriz de columnas para ContentResolver.query, envuelva el nombre de la columna con la función sum()

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

Cursor cursor = getContentResolver().query(
    content_uri, 
    columns, 
    selection, 
    selectionArgs, 
    sort 
); 

cursor.moveToFirst(); 

int columnSum = cursor.getInt(0); 
+0

esto no funciona Columna suma (duración) E/DatabaseUtils (2917): \t en android.database.sqlite.SQLiteQueryBuilder.computeProjection (SQLiteQueryBuilder.java:523) –

3

respuesta aceptada ES INCORRECTO

Es posible en ContentProvider AS

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

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

único error que Tom no se olvide de hacerlo:

cursor.moveToFirst(); 
+0

Que Tom siempre comete errores; P –

Cuestiones relacionadas