Databáze v C# .NET - SQL Server Compact Edition (CE)
V předchozím kvízu, Kvíz - Databáze v C# - ADO.NET, jsme si ověřili nabyté zkušenosti z kurzu.
Č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í.

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

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.

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.

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

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.

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

Nyní musíme upravit zdrojový kód našeho projektu. Úprava bude velmi jednoduchá, přídáme using System.Data.SqlServerCe 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.

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.SqlServerCe.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.SqlServerCe.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#