2011-11-07 7 views
5

Mam dostawcy treści, który uzyskuje dostęp do mojej bazy danych, która jest w porządku, jeśli trzeba radzić sobie z zestawów płytowych ale muszę metodę zwraca liczbę całkowitą oznaczającą liczbę rekordów w tabeliAndroid niestandardowa metoda w dostawcy treści, aby uzyskać liczbę rekordów w tabeli?

Metoda wygląda to

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; 
} 

Ale nie jestem w stanie znaleźć żadnego sposobu użycia tego (lub jakiejkolwiek innej metody, która nie zwraca kursora w tym przypadku) w dostawcy treści, więc gdzie jest najlepsze miejsce do umieszczenia tej metody i jak ją nazwać ?

Oczywiście mógłbym zrobić naprawdę złe możliwość wyboru wszystkie rekordy z zarządzanego zapytania i używając cursor.count wynik, ale to jest jeden niezwykle nieefektywny sposób radzenia sobie z tym konkretnym wymogiem

Thanks

Odpowiedz

10

Można też po prostu użyć „count (*)” jako projekcja w wywołaniu swoich dostawców treści URI, jak w poniższym metody pomocnika

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; 
    } 
} 
1

Jednym ze sposobów dostępu do nich jest użycie metody call() w klasie ContentResolver. Nie mogę znaleźć zbyt wielu informacji o tym, jak używać tego w Google, ale domyślam się, że powinieneś po prostu zwrócić swój pakiet z wynikiem. Oczywiście łatwiej będzie zrobić coś takiego, jak to opisano w tej SO Post.

+0

Dziękuję, to otwiera szereg innych pytań na co najlepiej odpowiedzieć, jeśli istnieje przykład wdrożenia proponowanego rozwiązania. W szczególności, jak uzyskać wartość ze zwróconego pakietu i jak umieścić wartość w wyniku klasy pakunku. Gdybyś mógł wskazać mi kierunek użycia tej metody, byłbym bardzo wdzięczny za to, – jamesc

+0

Mam problem ze znalezieniem sposobu użycia tej metody. Zobacz moją zmodyfikowaną odpowiedź, aby uzyskać inne sugestie. –

+0

lol! Nie na własną rękę wtedy :) - Myślę, że mogę użyć zarządzanego zapytania, ustawić nowe URI i mieć wynik z wybranej liczby * Zwróć kursor - Wydaje się, że jest to rozwiązanie uproszczone. Dzięki za pomoc – jamesc

Powiązane problemy