2013-12-21 3 views
0

Я хочу, чтобы проверить, если мой стол пуст:Android ContentProvider/SQLiteDatabase COUNT запроса (*)

Uri uri = Uri.withAppendedPath(BASE_URI, "account"); 
Cursor countCursor = getContentResolver().query(uri, new String[] {"COUNT(*) AS COUNT_TABLE"}, null, null, null); 

Вот мой провайдер контента запрос:

public synchronized Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { 
    int uriType = sURIMatcher.match(uri); 
    SQLiteDatabase database = dbHelper.getReadableDatabase(); 
    Cursor cursor = null; 
    switch (uriType) { 
    case ACCOUNT: 
     checkColumns(projection, ACCOUNT); 
     cursor = database.query(TableAccount.TABLE_ACCOUNT, projection, selection, selectionArgs, null, null, sortOrder); 
     break; 
    case INPUT: 
     checkColumns(projection, INPUT); 
     cursor = database.query(TableInput.TABLE_INPUT, projection, selection, selectionArgs, null, null, sortOrder); 
     break; 
    case OUTPUT: 
     checkColumns(projection, OUTPUT); 
     cursor = database.query(TableOutput.TABLE_OUTPUT, projection, selection, selectionArgs, null, null, sortOrder); 
     break; 
    default: 
     throw new IllegalArgumentException("Unknown URI: " + uri); 
    } 
    cursor.setNotificationUri(getContext().getContentResolver(), uri); 
    return cursor; 
} 

Но каждый раз, когда я получаю эту ошибку :

IllegalArgumentException: Unkonwn columns in projection

Я предпочитаю не использовать rawQuerry

ответ

0

Попробуйте использовать этот метод для подсчета вашей базы данных sqlite. Я также добавил несколько примеров предложений для вашей справки. не изменяйте его:

public int getCount(String param1, String param2){ 
     SQLiteDatabase db = this.getReadableDatabase(); 
     long count; 
     count = DatabaseUtils.queryNumEntries(db, "TABLE_NAME", 
       "param1=? AND param2=?", new String[]{param1, param2}); 

     db.close(); 
     return count; 
    } 
Смежные вопросы