Połączenie z bazą danych w Windows Mobile

dand

1 Połączenie z bazą danych w Windows Mobile
     1.1 Microsoft SQL Server Compact
     1.2 Praktyczny przykład
     1.3 LINQ

Połączenie z bazą danych w Windows Mobile

Platformy mobilne żądzą się swoimi prawami, o których jako programiści musimy zawsze pamiętać. Jedną z zasad jest to, że urządzenia mobilne nie zawsze mają połączenie internetowe lub szybkość łącza nie jest imponująca. Pomysł, by łączyć się z bazą „w locie” nie jest zbyt dobry właśnie z wyżej wymienionych powodów, a jeśli do tego weźmiemy pod uwagę awarię serwera bazodanowego lub jakąkolwiek awarię na łączach, to wszystkie aplikacje mobilne stają się bezużyteczne. Często pracownicy takich aplikacji nie mogą sobie pozwolić na tego typu zastoje w pracy.
Co w takim razie należy zrobić?
Firma Microsoft proponuje nam tworzenie lokalnych kopii baz danych, a jedynie okazjonalne ich synchronizowanie z serwerem baz danych.
Jakie więc technologie się za tym kryją?

  1. Microsoft SQL Server Compact Edition (w chwili pisania tego artykułu jest to wersja 3.5)
  2. Microsoft Sync Services for mobile devices
    W tym artykule skupimy się na pierwszym podpunkcie. Pokażę, jak utworzyć nową bazę danych, jak dodać do niej tabele oraz jak wyświetlić przykładowe dane. Na zakończenie pokażę przykład wykorzystania technologii LINQ na urządzeniach mobilnych. Co do dokładnego omówienia Microsoft Sync Services for mobile devices oraz Linq, to pojawią się odpowiednie artykuły wyjaśniające te technologie.

Microsoft SQL Server Compact

Microsoft SQL Server Compact Edition to następca Microsoft SQL Server Mobile, który był kiedyś wykorzystywany nako silnik bazodanowy (Windows Mobile 5.0). Ta wersja SQLa jest także obecnie stosowana, jako local database cache w aplikacjach Windows Forms. Jeśliby przyjrzeć się produktom Microsoft dokładniej, to zauważymy ogrom zastosowania tej bazy danych. Jego rozmiar jest niewyobrażalnie mały, bo zaledwie ~2.2 MB, ale rozmiar ten można zmniejszyć, jest to pojedynczy plik, a zabezpieczenie jest na poziomie plików: szyfrowanie oraz EFS. Działa w trybie In-Proc, co oznacza brak dodatkowych usług systemowych, dlatego też jest idealny do instalacji u klienta, który nie posiada jeszcze Microsoft SQL Server Compact, jak i do zastosowań mobilnych (od wersji Windows Mobile 6.0, SQL Server Compact jest zainstalowany w ROMie).
A prościej mówiąc jest to bardzo mała wersja SQL Server, która nie jest uruchamiana jako osobny proces oraz nie wymaga jakiejkolwiek administracji, dodawania użytkowników, czy ról.

Praktyczny przykład

Utwórzmy teraz nowy projekt w Microsoft Visual Studio 2008 klikając File/New/Project…, a następnie z listy po lewej wybieramy zakładkę Smart Device, w Name wpisujemy nazwę naszego projektu (np. 4programmersDBConnDemo). W kolejnym oknie wybieramy platformę, na którą będzie dedykowana nasza aplikacja, tak więc w Target platform ustawiamy Windows Mobile 6 Professional SDK, a jako .NET Compact Framework version wybieramy .NET Compact Framework Version 3.5, a ostatecznie w oknie Templates wybieramy Device Application i klikamy OK.

Teraz zajmiemy się dodaniem nowej bazy danych, tabel oraz przykładowych danych.
Klikamy View/Server Explorer, a następnie klikamy prawym klawiszem myszy w Data Connections, a z menu wybieramy Add Connection… . W nowym oknie przy Data source klikamy w Change, a z listy wybieramy Microsoft SQL Server Compact 3.5, po czym klikamy w OK. Poniżej mamy dwie opcje do zaznaczenia: My computer oraz ActiveSync connected device. Pierwsza opcja mówi o tym, że przykładowa baza będzie znajdowała się lokalnie na komputerze, a druga, że nasza baza znajduje się na fizycznym urządzeniu mobilnym. My wybieramy tą pierwszą opcję, a więc My computer (w dalszej części i tak zostanie kopia tej bazy dodana do projektu). Dalej ustawiamy Connection Properties, przy Database klikamy w Create…, by utworzyć nową bazę, a jeśli mieliśmy już przygotowaną wcześniej, to możemy użyć Browse…, w naszym przypadku będzie to Create…, gdyż nie posiadamy jeszcze żadnej bazy SQL Compact.
W oknie Create New SQL Server Compact Database w Enter the New SQL Server Compact database filename podajemy nazwę naszej bazy, razem ze ścieżką do bazy, czyli po ostatnim ukośniku dopisujemy 4progDB (u mnie wygląda to następująco: C:\Users\Daniel\Documents\4progDB). Jeżeli zachodzi taka potrzeba, to możemy dodać szyfrowanie, a wiec w Encryptioin Properties w New password wpisujemy nowe hasło, a następnie potwierdzamy w Confirm password wpisując drugi raz to samo hasło. Ostatecznie możemy wybrać Encryption mode, tu zostawiamy Platform Default, po czym klikamy OK. Jeśli po kliknięciu OK pojawi się nowe okno zatytułowane Microsoft Development Environmet z tekstem zaczynającym się od „The supplied password does not meet minimum complexity requirenmets.”, to oznacza to nie mniej ni więcej, że nasze hasło nie spełnia wymogów polityki bezpieczeństwa. Jeśli chcemy pozostać przy naszym haśle, klikamy w TAK, a jeśli chcemy zwiększyć poziom skomplikowania naszego hasła, to klikamy w NIE i ponownie ustawiamy hasło, z tym że tym razem wpisujemy je o większym skomplikowaniu, co jest jednoznaczne z podniesieniem bezpieczeństwa.
Gdy już mamy wszystko przygotowane, to możemy zaznaczyć Save my password, a następnie kliknąć w Test Connection, po czym powinien pojawić się komunikat: Test connection succeeded, co jest równoznaczne temu, że dobrze utworzyliśmy bazę danych i poprawnie skonfigurowaliśmy połączenie. Teraz możemy kliknąć OK, by komunikat o powodzeniu znikł, a następnie kolejny raz klikamy w OK, by zamknąć kreatora bazy.
Jeśli teraz spojrzymy, to w oknie Server Explorer`a pod Data Connections pojawiło się nowe połączenie z bazą danych: 4prgDB.sdf

Musimy teraz dodać przynajmniej jedną tabelę, która będzie przechowywać nasze przykładowe dane. Rozwijamy drzewko 4progDB.sdf klikając w znak plusa przed nazwą, a następnie klikamy prawym klawiszem myszy w Tables i z menu wybieramy Create Table. Jest to standardowa czynność, więc pominę opis dodawania tabeli (np. nazwa tabeli Customers, a kolumny, to CustomerID oraz FirstName).

Po tym, jak dodaliśmy nową tabelę do bazy, możemy umieścić w niej przykładowe dane, a więc klikamy w przykładową tabelę, u mniej jest to Customers i z menu wybieramy Show Table Data.
Możemy teraz dodać kilka przykładowych rekordów.

Proszę zwrócić uwagę na to, że przez cały czas podczas dodawania bazy danych, dodawania tabel oraz nowych danych korzystamy z Microsoft Visual Studio 2008, jeśli ktoś jest bardziej zaznajomiony z Microsoft SQL Server Management Studio, to można te wszystkie czynności wykonać właśnie w tym narzędziu. W celu większej ilości informacji proszę o kontakt.

Teraz dodamy do naszego projektu Data Sources klikając w Data/Show Data Sources, a w oknie klikamy w Add New Data Sources… . W nowym oknie klikamy w Database, a następnie OK, następnie wybieramy połączenie z naszą bazą danych (w naszym przypadku jest to 4progDB.sdf) oraz zanaczamy Yes, include sensitive data In the connection string, a następnie klikamy Next. Pojawi się komunikat mówiący o tym, że połączenie wybrało lokalną bazę danych, która nie jest w naszym projekcie, po czym pyta, czy dodać kopię do naszego projektu, klikamy Tak. Pozostaje na jedynie wybrać tabelę, która ma być dodana, w naszym przypadku jest to Customers, a jako DataSet name ustawiamy jako FourProgDBDataSet (musimy zmienić 4 na np. four [ang. cztery], gdyż w nazwie DataSet cyfra nie może być na pierwszym miejscu) i klikamy Finish.

W Data Sources będziemy teraz mieli naszą kolumnę Customers, aby ją dodać po prostu przeciągamy ją na formatke. DataGrid zostanie dodany automatycznie jak również niezbędny kod zostanie również wygenerowany automatycznie.

Możemy teraz uruchomić naszą aplikację, by się przekonać, że wszystko działa poprawnie.
Jeżeli chodzi o połączenie z bazą, to jak już pewnie sami stwierdziliście nie różni się znacząco od tego stosowanego podczas tworzenia standardowej aplikacji Win Form.

LINQ

Jako, że Linq jest moim zdaniem rewelacyjnym sposobem dostępu do danych, to chciałbym już w tym miejscu przedstawić przykład, jak możemy zaimplementować prosty przykład wykorzystujący właśnie tę technologię. Jak już pisałem wcześniej, na temat Linq będzie osobny artykuł, więc nie będę bardziej się tu o tym rozpisywał, a po prostu przedstawię naprawdę bardzo prosty kawałek kodu do analizy.

Do naszej formatki dodajemy jeden ListBox, następnie przechodzimy do Events naszej formatki i wybieramy Load lub dwa razy klikamy w puste miejsce na formatce, czy dodać kod dla zdarzenia Load naszej formatki.

            var linq = from data in fourProgDBDataSet.Customers
                       select data.FirstName;
            foreach (string s in linq)
            {
                listBox1.Items.Add(s.ToString());
            }

Kod nie jest jakoś specjalnie skomplikowany, ale dowodzi tego, że kolejny raz nie mamy jakichkolwiek zmian, jeśli chodzi o wykorzystanie Linq w aplikacji Win Form względem aplikacje mobilnej.

Jeśli masz jakiekolwiek pytania lub sugestie, to możesz pisać do mnie na adres e-mail: d.dudek[at]hotmail[dot]com
Poszukujesz więcej informacji?
Mój blog
Witryna firmy Microsoft - dział Windows Mobile
Microsoft SQL Server Compact

Autor: Daniel Dudek

0 komentarzy