Jul.10

Windows Mobile 5 Development Startup – Part III – SQL Mobile

In dit artikel wil ik het hebben over het opzetten van een mobiele applicatie met behulp van SQL Mobile. Ik ga er vanuit dat u als lezer al het een en ander met databinding heeft gedaan middels ADO.NET in het “normale” .NET framework. De zaken die specifiek zijn voor SQL Mobile wil ik hier uit de doeken doen. In dit stukje borduur ik verder op het project dat we in Part I hebben gemaakt en Part II hebben uitgebreidt met een setup project.

Voordat we aan de slag kunnen dient de Microsoft SQL Server 2005 Mobile Edition Device SDK (in de volksmond nog steeds SQL CE) te worden geinstalleerd. Deze is te vinden via deze url http://www.microsoft.com/downloads/details.aspx?FamilyID=5bd8abaa-5813-4db3-b23a-24551de2ecc1&DisplayLang=en

Na installatie van bovengenoemde SDK kunnen we aan de slag.

Open de eerder opgebouwde WM5Test solution. Voeg aan de WM5Test Windows Mobile applicatie een referentie toe naar de System.Data.SqlServerCe assembly. Dit gaat als volgt:

  • Klik met de rechtermuisknop op het WM5Test project.
  • Kies “Add Reference”
  • Selecteer de System.Data.SqlServerCe assembly en klik op “OK”.
  • wm5_3_pic1.jpg

  • Ga nu naar de codebehind van het enige Form dat we hebben en voeg het volgende using statement toe:
  • using System.Data.SqlServerCe;

    We gaan nu een database aanmaken om mee te testen. De databases voor SQL Mobile bestaan uit een single file met de extensie .sdf. Deze kunnen we met behulp van Visual Studio 2005 (VS2005) aanmaken. Dit werkt alsvolgt:
    wm5_3_pic2.jpg

  • Open de server explorer en klik op het icoontje met de tooltip “Connect to database”.
  • wm5_3_pic3.jpg

  • Klik in het window dat nu wordt geopend op “Create”.
  • wm5_3_pic4.jpg

  • Ik koos als database pad het pad naar het WM5Test Windows Mobile project. In mijn geval dus “C:Documents and SettingssnoeiMy DocumentsVisual Studio 2005ProjectsWM5TestWM5TestWM5Test.sdf”. De wachtwoord velden laten we leeg.
  • Klik op OK.
  • Kiik nogmaals op OK.
  • wm5_3_pic5.jpg
    Zoals te zien hebben we nu een connectie naar ons zojuist aangemaakte database.

  • Door met de rechtermuisknop op de “Tables” node te klikken van de nieuwe database en “Create Table” te kiezen kunnen we een nieuwe tabel aanmaken.
  • In het venster dat nu wordt geopend vullen we in het bovenste veld (naam van de nieuwe tabel) de naam “tblPersoon_per” in.
  • Vervolgens gaan we 4 velden aanmaken. Zie onderstaande schermafdruk.
  • wm5_3_pic6.jpg

  • Let op: bij perID moet bij de properties (onderin) “Is RowGuid” op “true” worden gezet. Er wordt dan automatisch een unieke code voor elk nieuw record gegenereerd.
  • Klik op OK.
  • Vul nu de tabel met enkele records.

  • Klik met de rechtermuisknop op “tblPersoon_per” en kies “Open”. Bij invoer hoeft perID niet te worden gevuld dit gebeurd automatisch (dankzij het eerder ingestelde “Is RowGuid” = true).
    wm5_3_pic7.jpg

    We gaan nu zorgen dat de Windows Mobile Applicatie gebruik gaat maken van de zojuist gecreeerde en gevuld database.

  • Plaats een DataGrid control op Form1 van de WM5Test applicatie.
  • Ga naar de datasource property van de DataGrid en klik deze open.
  • wm5_3_pic8.jpg

  • Klik op “Add Project Data Source”.
  • Kies “Database” en klik op “Next”.
  • In de combobox kan nu de WM5Test database worden gekozen. Klik daarna op “Next”.
  • Als er een vraag wordt gesteld kies dan eerst “Yes” en de vraag erna “No”.
  • Bij “Choose Your Data Objects” selecteer de “tblPersoon_per” en klik op “Finish”.
  • Laat de datasetname zoals die is: “WM5TestDataSet”.
  • Volgt er een foutmelding klik dan op OK.
  • Start de applicatie in de emulator.
  • Zoals je nu kunt zien worden de gegevens uit de database netjes weergegeven in de DataGrid. Voor mobile devices werkt het aanroepen van database functionaliteit hetzelfde als binnen het gewone framework. Ik had overigens problemen met het gebruik van transacties het lijkt erop dat de functionaliteit qua functies wel aanwezig is maar niet werkt. Ik heb me hierin overigens niet heel erg verdiept. Wie hier meer over weet plaatst wat mij betreft een comment.

    Om de applicatie draaiend te krijgen op een echte mobile device dient SQL Mobile runtime op de device te worden geinstalleerd. De cab file is te vinden in de directory
    C:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev3.0wce500
    in mijn geval uit de subdirectory “armv4i” sqlce30.ppc.wce5.armv4i.CAB

    Daarnaast kunnen ook nog de cab files sqlce30.dev.ENU.ppc.wce5.armv4i.CAB en sqlce30.repl.ppc.wce5.armv4i.CAB. Deze bevatten onder andere SQL Query Analyzer waarmee databases op de device zelf kunnen worden bekeken. Het is verder aan te raden om in dit soort applicaties Compact & Repair functionaliteit in te bouwen. Voor deze functionaliteit zijn de laatste 2 cabinet files ook noodzakelijk. De code voor een compact & repair ziet er alsvolgt uit:

    Kortom, het is best makkelijk om een mobiele database gestuurde applicatie op te zetten. De Tutorial is vrij summier maar is bedoeld als eerste stap die een idee geeft van de mogelijkheden.

    In de volgende en laatste tutorial wil ik het hebben over het gebruik van de Remote API waarmee we via een “gewone” WinForms client kunnen communiceren met een mobile device via ActiveSync. Hierin wil ik het onder andere hebben over het kopieren van bestanden van en naar een device en het opstarten van executables en installeren van cabinet files op afstand.