Blog Educativo.pl Menu

Link:

Jak używać SQLite w aplikacjach Windows Phone 8?

w kategoriiWindows Phone przez Grzegorz Jamiołkowski
Skomentuj

wp7SQLite jest znanym i cenionym silnikiem bazodanowym. Używa go wiele popularnych programów, z którymi często się spotykamy – warto tu wymienić chociażby Firefoxa. Powinniśmy zatem wiedzieć, że można z niego korzystać także w tworzonych aplikacjach pod Windows Phone.

 

Najważniejsze zalety użycia SQLite to oczywiście szybkość dostępu do danych oraz możliwość przetrzymywania zaawansowanych informacji. Baza w tym formacie nie wymaga instalacji i tak naprawdę jest zwykłym plikiem, przez co nie potrzebuje istnienia dodatkowych usług, aby móc w pełni rozwinąć swoją moc. Jest to niewątpliwe olbrzymia zaleta, która idealnie wpasowuje się w ekosystem Windows Phone, gdzie każda z aplikacji tworzy własną piaskownicę i nie ma bezpośredniego dostępu do dowolnych zasobów na urządzeniu. SQLite pomimo bycia niepozorną bazą danych, potrafi niemalże tyle samo co duże, desktopowe odpowiedniki. Co więcej podstawowe operacje, jak insert/udpate/delete oraz selecty działają równie szybko jak pełnoprawne, systemowe bazy danych, a w niektórych przypadkach nawet szybciej. Jest to zatem idealny zamiennik i rozszerzenie dla trzymania danych w plikach. Natywne SQLite w Windows Phone 8 to duża nowość w tym systemie. Zatem, aby przystąpić do pracy, trzeba trochę się nagimnastykować, gdyż jeszcze część wymaganych bibliotek nie jest łatwo dostępna.

Rozpoczęcie prac należy obowiązkowo zacząć od instalacji rozszerzenia do Visual Studio:

SQLite for Windows Phone. Znjadziemy je w menu Tools > Extensions and Updates. Po instalacji należy zrestartować Visual Studio.

Kolejny krok to dołączenie wrappera. Jest on niezbędny, aby nawiązać komunikację pomiędzy zainstalowanym przed chwilą SQLite for Windows Phone, a biblioteką do działania na bazie, już z poziomu naszego kodu. Tym właśnie łącznikiem jest sqlite-net-wp8.  Nie jest on jeszcze dostępny ani z poziomu okna rozszerzeń (Extensions and Updates), ani z NuGeta. Na dzień dzisiejszy należy pobrać paczkę ze źródłami bezpośrednio ze strony twórcy: https://github.com/peterhuene/sqlite-net-wp8. Po ściągnięciu pliku, rozpakowujemy go i dodajemy projekt sqlite-net-wp8 do solucji, gdzie znajduje się już projekt pod Windows Phone 8.

Następny krok to oczywiście dodanie referencji sqlite-net-wp8 do naszego projektu z Windows Phone 8 (w References Manager wybieramy podmenu Solution i jeśli wszystko zrobiliśmy dobrze, pojawić się powinien odnośnik do sqlite-net-wp8).

Przyszedł czas na instalację wspomnianej biblioteki, która będzie pozwalała na tworzenie kodu, do zarządzania bazą SQLite. Mowa tu o sqlite-net. W tym momencie wystarczy z poziomu NuGeta wyszukać ową bibliotekę i ją zainstalować. To nie koniec problemów. Podczas kompilacji może pojawić się komunikat:

The type or namespace name ‚Community’ could not be found (are you missing a using directive or an assembly reference?)

Należy zatem dodać odpowiednią dyrektywę dla kompilatora, aby wiedział, że sqlite-net musi używać wcześniej zainstalowanego składnika sqlite-net-wp8. Aby to zrobić należy otworzyć okienko właściwości projektu i w zakładce Build w polu  Conditional compilation symbols dodać na samym końcu dyrektywę: USE_WP8_NATIVE_SQLITE. W tym momencie solucja będzie się kompilować, a my możemy zacząć używać SQLite w Windows Phone 8.

Nasz trud został doceniony. Możemy już korzystać z dobrodziejstw SQLite w projekcie pisanym dla sytemu mobilnego.

Połączenie z baza:

string sqlLitePath =  

Path.Combine(ApplicationData.Current.LocalFolder.Path,"b.sqlite");

SQLiteConnection sqliteDB = new SQLiteConnection(sqlLitePath);

Mając przykładową klasę Test:

public class Test

{
     public int Id { get; set; }
     public string Value { get; set; }
}

dodanie elementu wygląda następująco:

sqliteDB.Insert(new Test() { Id = 3, Value = "Test" });

 

 

jeśli nie ma tabeli Test, dodanie jej odbywa się poprzez:

sqliteDB.CreateTable<Test>();

 

 

Nie jest łatwo skonfigurować połączenie z SQLite w Windows Phone 8, jednakże trochę pracy pozwoli na użycie świetnego silnika bazy w projektach na urządzenia mobilne.

  • Pezet

    Ten kod testowales tylko na emulatorze, czy urzadzeniu tez?

    • Grzegorz Jamiołkowski

      Kod powinien działać na emulatorze i urządzeniu. Jeśli tak nie jest proszę śmiało pisać.

  • magnetic

    Ze SQLite w Windows Phone 8 jest jeden problem, „niewygodne” biblioteki napisane w C#. Inaczej się ma w wersji desktopowej, jest OK. Poniżej podaję linka, który rozwiązuje ten problem.

    System.Data.SQLite, SQLite + LINQ, DataTable itp. dla Windows Phone 8!
    Projekt i przykłady do pobrania: http://sqliteandcsharp.blogspot.com/2014/09/jak-powinna-wygladac-ergonomia-pracy-ze.html

  • Dziękujemy za skomenentowanie, dozwolone znaczniki html to strong, code i href.