Close

Baza implementacja – SQLiteOpenHelper – #04

Zacznijmy standardowo i powoli. Na początek potrzebujemy czegoś małego żeby w ogóle zacząć. Tabelka Meals ma u mnie tylko jedną kolumnę, którą muszę obsłużyć samodzielnie, kolumna z ID obsłuży się automagicznie po tym jak ustawię ją jako Primary Key. Dobry kandydat 🙂

Po zapoznaniu się z tutorialem i przeszukaniem niezastąpionego stackOverflow wstępnie stworzyłam klasę CoNaObiadDbHelper, która rozszerza androidową klasę do obsługi bazy SQLite.

Możemy w niej znaleźć nazwę bazy danych, tabelki, nazwy kolumn. Kilka query do tworzenia, czyszczenia (na początek dość przydatne 😉 ) i usuwania tabelki. Nadpisujemy metody z klasy bazowej: onCreate, onUpgrade, onDowngrade żeby wykonywały query, które podamy. To o czym musimy pamiętać w tym miejscu to to, że sami dbamy o zmianę struktury bazy (in|de)krementując stałą DATABASE_VERSION przed odpaleniem aplikacji.

Do metod, których potrzebuję na wejściu należy taka, która wypisze mi wszystkie posiłki, które mam zapisane w bazie. Do osiągnięcia tej metody użyję kursora i prostego query… prostego jak select * from table.

Przyda nam się też metoda, która wstawia dane do tabelki:

Otwieramy bazę w trybie do zapisu. Tworzymy obiekt ContentValues, który jest bardziej rozbudowaną tablicą haszującą i SQLiteDatabase zadba o odpowiednich insertów.

Tej metody możemy użyć od razu wstawiając przykładowe potrawy prosto do tabelki:

Czyli teraz nasza główna klasa wzbogaciła się o odczyt z bazy i wygląda tak:

Przy tworzeniu głównej aktywności tworzę bazę, czyszczę ją i inicjalizuję wartościami, które miałam w liście. Docelowo to czyszczenie i inicjalizacja pójdzie precz, ale na ten moment potrzebuję danych do wyświetlenia.

Póki co jest dobrze, ale za moment chcę stworzyć drugą tabelkę, w przyszłości trzecią. A w kodzie takie coś:  TABLE_NAME, COLUMN_NAME_NAME… Tak nie może zostać! Kolejnym krokiem jest zrefaktorowanie klasy CoNaObiadDbHelper tak żeby wyjąć z niej wszystko co dotyczy tabelki Meal i wstawić do osobnej klasy, tak żeby przy kolejnych modyfikacjach obszar zmian był jak najmniejszy.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: