Office week Slevový týden - Květen
Pouze tento týden sleva až 80 % na e-learning týkající se MS Office
30 % bodů zdarma na online výuku díky naší Slevové akci!

Lekce 2 - Vytvoření lokální databáze ve Visual Studio

V minulé lekci, Úvod do databází v C# .NET, jsme si udělali úvod do relačních databází a nainstalovali si Microsoft SQL Server.

Dnes si v C# .NET tutoriálu vytvoříme databázi, se kterou budeme po zbytek kurzu komunikovat.

Vytvoření databáze

Způsobů, jak lokální databázi vytvořit, je mnoho. Jako nástroj můžeme používat buď SQL Server Management Studio nebo přímo Visual Studio. Jako jednodušší způsob je určitě vytvořit databázi přímo ve Visual Studiu, proto zvolíme ten. Pokud chcete používat Management Studio, můžete využít článek Vytvoření databáze v MS SQL Management Studio.

Ve Visual Studiu si založíme nový projekt, konzolovou aplikaci, kterou pojmenujeme SlovickaSQL.

Přidání lokální databáze

Pro přidání databáze klikneme pravým tlačítkem na projekt v Solution Explorer a zvolíme Add -> New Item. V nově otevřeném okně si najdeme položku "Service-based Database" a pojmenujeme ji SlovnicekDB. Naše testovací aplikace bude totiž jednoduchý slovníček. Přidání potvrdíme tlačítkem Add:

Abychom databázi mohli používat, tak ji musíme nejdříve připojit k naší aplikaci. V okně Data Sources (menu View -> Other Windows -> Data Sources) klikneme na "Add New Data Source":

Otevře se nám nové okno pro vybrání zdroje dat. Vybereme "Database" a potvrdíme "Next":

Na následující stránce necháme vybraný "Dataset" a opět potvrdíme "Next". Zobrazí se nám stránka pro výběr datového připojení. Vybereme naši databázi SlovickaDB:

Po potvrzení tlačítkem "Next" se nám zobrazí stránka s dotazem, jestli chceme uložit tzv. ConnectionString, který budeme později používat pro připojení k databázi, do nastavení našeho projektu. Zaškrtneme, že chceme, název ponecháme výchozí a opět potvrdíme tlačítkem "Next":

Na poslední stránce ponecháme název DataSet na SlovickaDBDataSet a klikneme na "Finish", čímž dokončíme připojení:

Vytvoření tabulky

Stromovou strukturu lokálního serveru, na kterém je databáze, si můžeme zobrazit buďto přes okno "Server Explorer", anebo přes okno "SQL Server Object Explorer". My si otevřeme "SQL Server Object Explorer", jelikož je (jak název napovídá) přímo určený pro práci s SQL databází. Rozbalíme položku SQL Server -> (localdb)\MSSQLLocalDB > Databases. V této složce bychom měli vidět naši databázi, rozbalíme ji a stejně tak její položku "Tables", kde máme zatím jen systémové tabulky.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

O tabulkách již byla řeč minule. Víme, že takto se data do relační databáze ukládají. Do naší databáze budeme chtít ukládat slovíčka. Nejprve musíme vytvořit novou tabulku, kde definujeme sloupce, tedy vlastnosti, jaké slovíčko má. Na položku "Tables" klikneme pravým tlačítkem a zvolíme možnost "Add New Table":

Visual Studio otevře designer tabulky. Tento designer má okno rozdělené na tři části. V horní polovině máme sloupce naší tabulky s jejich datovými typy a dalšími důležitými vlastnostmi. Dole je výsledný T-SQL kód, který se spustí a databázi založí, až to budeme chtít.

Jak již bylo nastíněno, každá položka v databázi (tedy řádek v tabulce) by měla mít unikátní identifikátor (sloupec, ve kterém je pro každý řádek hodnota jedinečná). K tomuto účelu slouží tzv. primární klíč. Je to obyčejný sloupec, který se nejčastěji pojmenuje jednoduše Id a bude typu int. Názvy sloupců budeme psát s velkým počátečním písmenem.

Ačkoli doteď jsme se snažili psát ukázkové aplikace v češtině, databázi si navrhneme v angličtině. To proto, že ke konci kurzu budeme používat technologie, které skloňují názvy tabulek a umí samozřejmě jen anglicky.

Dále přidáme další 2 sloupce: Czech a English. Jedná se o znění slovíčka v češtině a v angličtině. Sloupce budou typu nvarchar(50). Jedná se o řetězec znaků, kde 50 je maximální počet znaků. Neplést s typem nchar, kde se nejedná o maximální velikost, ale text je vždy dlouhý 50 znaků. Ještě existují typy char a varchar (bez n), ty nepodporují kódování Unicode a proto je nebudeme používat. Pro krátký text budeme tedy vždy používat typ nvarchar. Nakonec přidáme poslední sloupec Difficulty, značící obtížnost slovíčka. Bude typu int.

Pokud vás napadla podobnost databázové tabulky a třídy v jazyce C#, tak máte pravdu. Definice tabulky je téměř totožná s definicí třídy, jednoduše navolíme atributy, co daná entita má. Řádky zapsané v tabulce poté můžeme chápat jako jednotlivé instance třídy. Tvoříme tedy jakoby třídu Word (slovíčko), která má vlastnosti Id, Czech (české znění) a English (anglické znění). Takto budeme ve výsledku s databází i pracovat, ale nepředbíhejme. Vraťme se ještě ke sloupci Id, klikneme na něj pravým tlačítkem a vyberme Properties. V okně Properties nastavme možnost Is Identity na True (je třeba rozbalit Identity Specification):

Tím jsme určili, že sloupec Id je vždy unikátní. Visual Studio nám samo nastavilo i hodnoty Identity Increment a Identity Seed na 1. To znamená, že první slovíčko v tabulce bude mít hodnotu Id 1, druhé 2 atd. Databáze přiřadí automaticky každému nově vloženému slovíčku o 1 vyšší Id, o unikátnost se nám tedy stará sama.

Id rostou stále, i když nějaké slovíčko vymažeme a Id se tedy uvolní, již nebude použito. Je to z toho důvodu, že recyklace starých Id může způsobit problémy.

Jestliže tento sloupec ještě nemáme nastavený jako primární klíč pro naši novou tabulku, tak klikneme pravým tlačítkem na název sloupce a zvolíme možnost "Set Primary Key":

Každá tabulka by měla mít primární klíč, jinak nebudeme schopni jednoznačně určit konkrétní záznam a některé technologie (např. Entity Framework) by s tabulkou mohly mít problém pracovat.

Nakonec si tabulku přejmenujeme na Word (jako slovíčko). Toho docílíme tak, že v T-SQL kódu přepíšeme na konci prvního řádku aktuální název (Table) v hranatých závorkách. Tabulky pojmenováváme opět velkým písmenem a v jednotném čísle, jako by to byla třída:

Po přejmenování klikneme na tlačítko "Update". V okně, které se nám otevře, klikneme na "Update Database" pro uložení změn.

Databázi máme tímto založenou. Vytvořme si ještě nějaká testovací data, aby nebyla prázdná. Na tabulku klikneme pravým tlačítkem a zvolíme "View Data":

Nyní jen vložíme několik slovíček. Id se vyplňuje samo, stačí tedy zadat českou a anglickou variantu a obtížnost. Já jsem si jich přidal jen několik, vy si jich klidně naklikejte více s různými obtížnostmi, ať máte co nejvíce dat na zkoušení:

Rozšíření

Pokud vás tvorba databáze příliš neodrovnala (což by neměla :) ), můžete si do ní přidat ještě druhou tabulku. Díky tomu si budeme moci dále ukázat i pokročilejší dotazy přes více tabulek. Pokud chcete začít raději jednoduše, můžete tento krok přeskočit stejně jako pár dále ukázaných dotazů.

Přidejte si stejným způsobem tabulku Category, která bude reprezentovat kategorii slovíček. Opět jí dáme sloupec Id, kterému nastavíme Identity na True a poté ho učiníme primárním klíčem. Co se týče dalších sloupců, bude zde pouze jeden, opět typu nvarchar(50) a s názvem Title. To bude titulek kategorie (např. "Počítače", "Zvířata" nebo "Ostatní"). Tabulku uložíme jako Category:

Opět vytvoříme testovací data:

Nyní přidáme slovíčku vazbu na kategorii, které se někdy říká cizí klíč nebo relace. Vraťme se k naší tabulce Word a přidejme ji ještě jeden sloupec s názvem CategoryId. Bude typu int. V Properties mu nastavíme "Default Value or Binding" na 1. To je výchozí hodnota. Dále v pravém sloupci designeru klikneme pravým tlačítkem na položku "Foreign Keys", zvolíme "Add New Foreign Key" a pojmenujme ho třeba "FK_Word_Category":

Tento cizí klíč (vazba) se nám vygeneroval i v T-SQL kódu:

Zde nastavíme, že se tabulka Word pomocí sloupce CategoryId připojí na primární klíč tabulky Category, kterým je Id:

Nyní databáze ví, že pokud je např. u slovíčka ve sloupci CategoryId hodnota 1, váže se k první kategorii. Vše uložíme tlačítkem "Update". Znovu editujte záznamy v tabulce Word a slovíčkům nastavte kategorii:

Číslo je samozřejmě primární klíč do tabulky Category, 1 tedy odpovídá záznamu "Počítače", 2 "Zvířata" a 3 "Ostatní".

V příští lekci, Přístupy pro práci s relačními databázemi v .NET, si představíme přístupy, pomocí kterých s databází můžeme z C# .NET komunikovat.


 

Stáhnout

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

 

 

Aktivity (2)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!