SQL Server 2005 Compact Edition – első lépések

Van a Microsoftnak több adatkezelő motorja, ezek közül talán az SQL Server 2005 Compact Edition (SSCE) a legszimpatikusabb: ő egy in-process adatbázis motor (tehát nem service), mindössze 5 MB memória és 2 MB diszk igénnyel (a hivatalos adatok szerint). Persze vannak korlátai is, egy felhasználós, egy fájlos adatbázist tud kezelni és sajnos nem ismeri a tárolt eljárásokat, ami azért sajnálatos, mert ahogy május 24-én említettem, a LINQ to SQL egyelőre nem támogatja az SSCE-t. Azért még ezekkel a megkötésekkel is időnként jól jön egy olyan adatbázis motor, amit nem kell telepíteni, csak felmásolni a DLL-jeit, amihez az adatbázist nem kell attachelni, csak odamásolni és amit a szokásos SQL parancsokkal le tudunk kérdezni.

Íme egy kis segítség az első lépésekhez:

Mivel olvasott embernek párja nincs, legalább a 2 oldalas datasheetet érdemes elolvasni annak, aki még nem ismeri ezt a terméket. Kicsit hosszabb, de lényegesen hasznosabb a Data Storage Architecture doksi, azt inkább ajánlom.

Ha már elég tettrekésznek érezzük magunkat, akkor először is célszerű letölteni azt a csomagot, ami a Visual Studioba beépülő editor támogatást is tartalmazza.

Ha ez megvan és végignyomkodtuk a next-next-finish varázslót, ideje megkeresni a Studioban, hogyan is tudjuk hozzáadni ezt a szolgáltatást egy projektünkhöz. Mivel WinFormsos tutorialok vannak az MSDN-en, most inkább azt nézzük, hogy egy mezei konzol alkalmazásnál mit kell tennünk.

Az új alkalmazás létrehozása után kell egy referenciát adnunk a System.Data.SqlServerCe szerelvényre. Ennek a helye önmagában is érdekes:

  • Lehet a GAC-ban, mert – a leírás szerint legalábbis – a Microsoft MSI telepítője odateszi. Ha ott van, azért remek, mert onnan tud Windows Update-elődni.
  • Lehet a C:Program FilesMicrosoft Visual Studio 8Common7IDE vagy az alatt a PublicAssemblies mappában. A fene se érti mit keres itt, nálam ide települt.
  • Lehet bárhol, hiszen csak egy szerelvény referenciára van szükségünk.

A következő lépésben természetesen usingolni kell:

    using System.Data.SqlServerCe;

Ezek után a történet a szokásos, kell egy connection, annak egy connection string, ami ezúttal nem adatbázisra, hanem fájlra mutat. Egyébként érti az ASP.NET-ben megszokott |DataDirectory| formátumot is (@"Data Source = |DataDirectory|Northwind.sdf").

    SqlCeConnection conn = new SqlCeConnection( "Data Source=Northwind.sdf" );

SDF, mint single data file. Honnan lesz Northwind példafájlunk? Onnan, hogy megtaláljuk a C:Program FilesMicrosoft Visual Studio 8SmartDevicesSDKSQL ServerMobilev3.0 mappában. A fájlt hozzáadva a solutionhöz, majd duplán kattintva rá, tudjuk szerkeszteni a táblákat és az adatokat a Server Explorerben, csakúgy, mint a nagy SQL Server esetén. Ezzel kapcsolatban egy tapasztalat: ha a Server Explorerben nem zárjuk le a kapcsolatot, a Setup project nem veszi hozzá az SDF fájlt a telepítőhöz a setup project buildelése közben és persze hibaüzenetet sem küld.

Ezek után jöhet a command, ami nem lehet tárolt eljárás, de paraméterezett lekérdezés igen:

    SqlCeCommand cmd = new SqlCeCommand( 
"SELECT [Company Name], [Contact Name] FROM Customers WHERE City=@City", conn ); cmd.Parameters.AddWithValue( "@City", "London" );

A query megszülésében a VS tud segíteni: jobb klikk a Server Explorerben az adatbázison, majd a New Query menüpontot választva jön az ismerős Query Builder ablak, ahol összekattintgathatjuk, majd kikopipésztelhetjük az SQL lekérdezést.

Végül jön a szokásos megnyitás, futtatás, lezárás, ami mezei demó kódban így fest:

    conn.Open();

    SqlCeDataReader reader = cmd.ExecuteReader();
    while( reader.Read() )
    {
        Console.WriteLine( "{0,-30}{1}", reader[ "Company Name" ], reader[ "Contact Name" ] );
    }

    reader.Close();
    conn.Close();

Aki nem konzol alkalmazásból akarja használni, hanem mondjuk WinFormsban akar bűvészkedni, annak is gondja lehet azzal, hogy az Add New Item dialógus ablakban nem tud SDF fájlt hozzáadni a projekthez. A trükk az, hogy a Data -> Show Data Sources ablakból kell elindulni és fel kell venni egy új Database típusú adatforrást, aminek a konfigurálásakor Microsoft SQL Server 2005 Compact Editiont kell kiválasztani, ami után a következő ablakban már találunk egy Create gombot.

A Data Sources ablakból lehet egyébként ugyanúgy lehet varázsolgatni egy WinForms alkalmazásban, ahogy azt SQL Servernél vagy Expressnél megszoktuk, erről van itt néhány tutorial. Aki pedig a DataSet jellegű megközelítést szereti, az élvezkedhet az SqlCeResultSet osztállyal.

A fenti kódot tartalmazó projekt forráskódja a devPORTALról tölthető le.

Technorati tags: ,

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s