IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Databáze v C# .NET - SQL Server Compact Edition (CE)

Článek pojednává o technologii, jejíž vývoj byl Microsoftem ukončen. Je na ITnetwork pouze z historických důvodů, kdyby informace někdo potřeboval pro aplikaci, která tuto technologii ještě používá.

V několika minulých dílech jsme vytvořili jednoduchý slovníček s použitím MS-SQL databáze. Dnes si ukážeme, jak aplikaci převést do Microsoft SQL Server Compact.

SQL Server Compact (CE)

Microsoft SQL Server Compact Edition (někdy označovaný jen jako Microsoft SQL Server CE) je zjednodušená verze Microsoft SQL Serveru, která je obsažená jen v několika DLL souborech. Databáze je poté uložena jako jeden soubor na disku. Pokud k naší aplikaci přiložíme tyto soubory, bude fungovat na každém počítači, ačkoli zde Microsoft SQL server vůbec nebude nainstalovaný. Tomuto typu databáze se někdy říká embedded nebo portable. Hodí se pro běžné aplikace, které posíláme např. přátelům nebo běžným uživatelům. Pro obchodní aplikace se téměr vždy využívá klasický Microsoft SQL Server.

SQL server plně podporuje základní SQL klauzule a je také k dispozici ve verzi Express, kterou budeme používat. Oproti plné verzi nepodporuje např.:

  • DISTINCT v agregovaných funkcích
  • Uložené procedury
  • Spouště
  • Pohledy

Některé další funkce má oproti plné verzi ořezané, např. transakce nebo práce s velkými typy sloupců, jako image. Vyčerpávající porovnání SQL Serveru CE a Microsoft SQL serveru naleznete zde: http://technet.microsoft.com/…s172400.aspx

Použití SQL Serveru CE v C# .NET

Přepišme příklad pro výpis všech slovíček z minulého dílu pro SQL Server CE.

Vytvoření databáze

Nejprve si založíme novou databázi. Využijeme k tomu přímo Visual Studio. V DatabaseExploreru přidáme nové připojení.

Database explorer ve Visual Studio - Databáze v C# - ADO.NET

Data source následně změníme na SQL Server Compact 4.0.

Microsoft SQL Server Compact Edition ve Visual Studio - Databáze v C# - ADO.NET

Tlačítkem Create vyvoláme dialog k vytvoření nového souboru s databází. Projdeme až do složky s naší aplikací (bin/debug). Databázi pojmenujeme slovicka.sdf. Jazyk nastavíme na češtinu.

Nová SQL Server CE databáze ve Visual Studio - Databáze v C# - ADO.NET

Vše potvrdíme a v DatabaseExploreru rozklikneme novou databázi a vytvoříme zde tabulku, kterou naplníme daty. Věřím, že to nemusím popisovat, je to podobné jako v Microsoft SQL Management Studio. Hotová tabulka je vidět na screenshotu.

Návrh databázové tabulky pro Microsoft SQL Server CE ve Visual Studio - Databáze v C# - ADO.NET

Data do tabulky vložíme pravým klikem a zvolením Show table data:

Editace dat v databázi pomocí Visual Studio - Databáze v C# - ADO.NET

Upravení projektu

K projektu musíme nejprve na SQL Server CE přidat referenci. Jinak nebudeme moci používat jeho jmenné prostory. Referenci přidáme v SolutionExploreru pravým kliknutím na References a poté na Add.

Přidání reference k C# .NET projektu ve Visual Studio - Databáze v C# - ADO.NET

V dialogu zvolíme Assemblies -> Extensions a zaškrtneme checkbox u System.Data.SqlSer­verCe 4.0.0.0.

Reference na SQL Server CE ve Visual Studio - Databáze v C# - ADO.NET

Nyní musíme upravit zdrojový kód našeho projektu. Úprava bude velmi jednoduchá, přídáme using System.Data.SqlSer­verCe a všem databázovým třídám přidáme do názvu Ce. Nesmíme zapomenout změnit ConnectionString na relativní cestu k souboru s databází.

string connectionString = @"Data Source=slovicka.sdf";
using (SqlCeConnection spojeni = new SqlCeConnection(connectionString))
{
    spojeni.Open();
    string dotaz = "SELECT * FROM Word";
    using (SqlCeDataAdapter adapter = new SqlCeDataAdapter(dotaz, spojeni))
    using (DataSet vysledky = new DataSet())
    {
        adapter.Fill(vysledky);
        foreach (DataRow radek in vysledky.Tables[0].Rows)
        {
            Console.WriteLine("Id: " + radek[0] + ", česky: " + radek["Czech"] + ", anglicky: " + radek["English"]);
        }
    }
    spojeni.Close();
    Console.ReadKey();
}

Projekt funguje úplně stejně jako předtím, databáze však již není jako lokálně běžící služba, ale jako jednoduchý soubor.

Microsoft SQL Server Express v C# .NET - Databáze v C# - ADO.NET

Kopírování souborů

Aby naše aplikace fungovala, musíme k ní přibalit Microsoft SQL Server CE. Otevřeme si následující umístění

C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0

Je důležité, abyste vybrali Program Files (x86), budeme s naší aplikací distribuovat 32bitovou verzi serveru. Všechny dll soubory z této složky zkopírujeme do složky bin/Debug našeho projektu.

Dále otevřeme:

C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Desktop

A soubor System.Data.SqlSer­verCe.dll též zkopírujeme. Pokud budete chtít používat v aplikaci Entity Framework, je třeba zkopírovat ještě dll ze složky System.Data.SqlSer­verCe.Entity.

Aplikaci můžete zkusit poslat přátelům, bude jim fungovat, i když nemají nainstalovaný Microsoft SQL Server.

Závěrem

V těchto třech dílech jsme si ukázali, jak se v C# .NET pracuje s databází pomocí MS-SQL dotazů. Příště si ukážeme, jak se s DB pracuje pomocí technologie LINQ TO SQL.

Co se týče další syntaxe MS-SQL, tak v seriálu dále naleznete mnoho dotazů v příkladech, které ukazují jak se pokročilejší dotazy v MS-SQL zapisují. Určitě se na ně podívejte. Dnešní projekt je jako vždy ke stažení v příloze.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 267x (38.61 kB)
Aplikace je včetně zdrojových kódů v jazyce C#

 

Předchozí článek
Kvíz - Databáze v C# - ADO.NET
Všechny články v sekci
Databáze v C# - ADO.NET
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity