policzmy rekordy – DatabaseUtils.queryNumEntries – #06

Wymyśliłam sobie, że w momencie kiedy użytkownik po raz pierwszy wchodzi do aplikacji, to zostaje wysłane sprawdzenie, czy w tabelce, w której mamy zapisane posiłki już coś jest. Mogłam to zrobić jak wcześniej już: pisząc natywne query, tworzyć kursor i wyciągnąć z niego wartość, ale przecież to nie powinno być tak! Powinien być bardziej elegancki sposób wyciągnięcia takiej informacji. Po krótkim odpytaniu google’a jak można to zrobić wypluło mi klasę DatabaseUtils, z której jeszcze nie korzystałam i okazało się, że można to zrobić ładniej, piękniej, mniej nachalnie 😀

https://gist.github.com/jezinka/45600f5797d9c631aa1f8b74b3a6b521

Metoda queryNumEntries w najprostszym wywołaniu przyjmuje 2 parametry – bazę danych i nazwę tabelki, a zwraca liczbę wierszy.

Wersja bardziej wypasiona – 3 parametrowa:

DatabaseUtils.queryNumEntries(db, "meal", "name like 'p%'");

Przemycamy w trzecim parametrze to co wrzucilibyśmy w warunek where w tym wypadku mówimy: policz mi wszystkie rekordy z tabeli meal, których nazwa zaczyna się na literę 'p’.

Wersja pro – na 4 parametry:

DatabaseUtils.queryNumEntries(db, "meal", "name = ? or name = ?", new String[]{"pizza", "pesto"});

możemy zamiast wartości parametrów podać ? i w tablicy Stringów przekazać wartości, których szukamy. Przykład – zlicz te rekordy w tabelce, których nazwa to pesto lub pizza.

Coś czuję, że przyda mi się to do statystyk, ale może do tego czasu odkryję coś nowego 🙂

Po zasugerowanym i konstruktywnym feedbacku funkcja prezentuje się następująco 😉

https://gist.github.com/jezinka/26642b495bce6568292df2fffb52c6fa

3 thoughts on “policzmy rekordy – DatabaseUtils.queryNumEntries – #06

  1. Patrząc na tą funkcję, mam ochotę ją nieco zrefaktorować, aby była bardziej zwięzła 😉

    Osobiście bym nie nazywał parametru sqLiteOpenHelper, ale po prostu helper.
    Poza tym zaimportowałbym statycznie metodę queryNumEntries, w wyniku czego można by napisać po prostu:

    SQLiteDatabase db = helper.getReadableDatabase();
    return queryNumEntries(db, „meal”) > 0;

    Co o tym myślisz?

  2. nie zawsze trzeba zwięźle, chociaż jednolinijkowce w Pythonie dobrze się czyta 😉
    Co do nazwy -> helper byłoby ok, to w sumie krótka metoda, innego helpera nie planujemy, statyczny import też super, ale zmienną count zostawiam, bo lubię wiedzieć co to miało zwrócić 🙂
    Zaraz dorzucę do postu trochę refaktoringu 🙂

    1. no dobra, im dłużej patrzę w ten kod, tym bardziej przyznaję Ci rację – NumEntries jest wystarczająco opisowe żeby zastąpić counta 🙂

Skomentuj paulinakaczmarek Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.