Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

2. diel - Vytvorenie lokálnej databázy vo Visual Studio

Dnes si v C# .NET tutoriálu vytvoríme databázu, s ktorou budeme po zvyšok kurzu komunikovať.

Vytvorenie databázy

Spôsobov, ako lokálnu databázu vytvoriť, je veľa. Ako nástroj môžeme používať buď SQL Server Management Studio alebo priamo Visual Studio. Ako jednoduchší spôsob je určite vytvoriť databázu priamo vo Visual Studiu, preto zvolíme ten. Ak chcete používať Management Studio, môžete využiť článok Vytvorenie databázy v MS SQL Management Studio.

Vo Visual Studiu si založíme nový projekt, konzolovú aplikáciu, ktorú pomenujeme SlovickaSQL.

Pridanie lokálnej databázy

Pre pridanie databázy klikneme pravým tlačidlom na projekt v roztoku Explorer a zvolíme Add -> New Item. V novo otvorenom okne si nájdeme položku "Service-based Database" a pomenujeme ju SlovnicekDB. Naše testovacie aplikácia bude totiž jednoduchý slovníček. Pridanie potvrdíme tlačidlom Add:

Databázy v C # - ADO.NET

Aby sme databázu mohli používať, tak ju musíme najskôr pripojiť k našej aplikácii. V okne Data Sources (menu View -> Other Windows -> Data Sources) klikneme na "Add New Data Source":

Databázy v C # - ADO.NET

Otvorí sa nám nové okno pre vybranie zdroja údajov. Vyberieme "Database" a potvrdíme "Next":

Databázy v C # - ADO.NET

Na nasledujúcej stránke necháme vybraný "Dataset" a opäť potvrdíme "Next". Zobrazí sa nám stránka pre výber dátového pripojenia. Vyberieme našu databázu SlovickaDB:

Databázy v C # - ADO.NET

Po potvrdení tlačidlom "Next" sa nám zobrazí stránka s dotazom, či chceme uložiť tzv. ConnectionString, ktorý budeme neskôr používať pre pripojenie k databáze, do nastavenia nášho projektu. Zaškrtneme, že chceme, názov ponecháme predvolené a opäť potvrdíme tlačidlom "Next":

Databázy v C # - ADO.NET

Na poslednej stránke ponecháme názov DataSet na SlovickaDBDataSet a klikneme na "Finish", čím dokončíme pripojenie:

Databázy v C # - ADO.NET

Vytvorenie tabuľky

Stromovú štruktúru lokálneho servera, na ktorom je databáza, si môžeme zobraziť buď cez okno "Server Explorer", alebo cez okno "SQL Server Object Explorer". My si otvoríme "SQL Server Object Explorer", pretože je (ako názov napovedá) priamo určený pre prácu s SQL databázou. Rozbalíme položku SQL Server -> (localdb)\MSSQLLocalDB > Databases. V tejto zložke by sme mali vidieť našu databázu, rozbalíme ju a rovnako tak jej položku "Tables", kde máme zatiaľ len systémové tabuľky.

O tabuľkách už bola reč minule. Vieme, že takto sa dáta do relačnej databázy ukladajú. Do našej databázy budeme chcieť ukladať slovíčka. Najprv musíme vytvoriť novú tabuľku, kde definujeme stĺpce, teda vlastnosti, aké slovíčko má. Na položku "Tables" klikneme pravým tlačidlom a zvolíme možnosť "Add New Table":

Databázy v C # - ADO.NET

Visual Studio otvorí designer tabuľky. Tento designer má okno rozdelené na tri časti. V hornej polovici máme stĺpce našej tabuľky s ich dátovými typmi a ďalšími dôležitými vlastnosťami. Dole je výsledný T-SQL kód, ktorý sa spustí a databázu založia, až to budeme chcieť.

Ako už bolo naznačené, každá položka v databáze (teda riadok v tabuľke) by mala mať unikátnu identifikátor (stĺpec, v ktorom je pre každý riadok hodnota jedinečná). K tomuto účelu slúži tzv. Primárny kľúč. Je to obyčajný stĺpec, ktorý sa najčastejšie pomenuje jednoducho Id a bude typu int. Názvy stĺpcov budeme písať s veľkým začiatočným písmenom.

Hoci doteraz sme sa snažili písať ukážkové aplikácie v slovenčine, databáze si navrhneme v angličtine. To preto, že ku koncu kurzu budeme používať technológie, ktoré skloňujú názvy tabuliek a vie samozrejme len po anglicky.

Ďalej pridáme ďalšie 2 stĺpce: Czech a English. Jedná sa o znení slovíčka v slovenčine a v angličtine. Stĺpce budú typu nvarchar(50). Jedná sa o reťazec znakov, kde 50 je maximálny počet znakov. Nepliesť s typom nchar, kde sa nejedná o maximálnu veľkosť, ale text je vždy dlhý 50 znakov. Ešte existujú typy char a varchar (bez n), tie nepodporujú kódovanie Unicode a preto ich nebudeme používať. Pre krátky text budeme teda vždy používať typ nvarchar. Nakoniec pridáme posledný stĺpec Difficulty, značiaci obtiažnosť slovíčka. Bude typu int.

Ak vás napadla podobnosť databázovej tabuľky a triedy v jazyku C #, tak máte pravdu. Definícia tabuľky je takmer totožná s definíciou triedy, jednoducho navolíme atribúty, čo daná entita má. Riadky zapísané v tabuľke potom môžeme chápať ako jednotlivé inštancie triedy. Tvoríme teda akoby triedu Word (slovíčko), ktorá má vlastnosti Id, Czech (slovenské znenie) a English (anglické znenie). Takto budeme vo výsledku s databázou aj pracovať, ale nepredbiehajme. Vráťme sa ešte ku stĺpci Id, klikneme naň pravým tlačidlom a vyberme Properties. V okne Properties nastavme možnosť Is Identity na True (treba rozbaliť Identity Specification):

Databázy v C # - ADO.NET

Tým sme určili, že stĺpec Id je vždy unikátny. Visual Studio nám samo nastavilo aj hodnoty Identity Increment a Identity Seed na 1. To znamená, že prvé slovíčko v tabuľke bude mať hodnotu Id 1, druhej 2 atď. Databáza priradí automaticky každému novo vloženému slovíčku o 1 vyššia Id, o unikátnosť sa nám teda stará sama.

Id rastú stále, aj keď nejaké slovíčko vymastíme a Id sa teda uvoľní, už nebude použité. Je to z toho dôvodu, že recyklácia starých Id môže spôsobiť problémy.

Ak tento stĺpec ešte nemáme nastavený ako primárny kľúč pre našu novú tabuľku, tak klikneme pravým tlačidlom na názov stĺpca a zvolíme možnosť "Set Primary Key":

Databázy v C # - ADO.NET

Každá tabuľka by mala mať primárny kľúč, inak nebudeme schopní jednoznačne určiť konkrétne záznam a niektoré technológie (napr. Entity Framework) by s tabuľkou mohli mať problém pracovať.

Nakoniec si tabuľku premenujeme na Word (ako slovíčko). To docielime tak, že v T-SQL kódu prepíšeme na konci prvého riadku aktuálny názov (Table) v hranatých zátvorkách. Tabuľky pomenovávame opäť veľkým písmenom a v jednotnom čísle, ako by to bola trieda:

Databázy v C # - ADO.NET

Po premenovaní klikneme na tlačidlo "Update". V okne, ktoré sa nám otvorí, klikneme na "Update Database" pre uloženie zmien.

Databáze máme týmto založenú. Vytvorme si ešte nejaká testovacie dáta, aby nebola prázdna. Na tabuľku klikneme pravým tlačidlom a zvolíme "View Data":

Databázy v C # - ADO.NET

Teraz len vložíme niekoľko slovíčok. Id sa vypĺňa samo, stačí teda zadať českú a anglickú variant a obtiažnosť. Ja som si ich pridal len niekoľko, vy si ich pokojne naklikajte viac s rôznymi obtiažnosťami, nech máte čo najviac dát na skúšanie:

Databázy v C # - ADO.NET

Rozšírenie

Ak vás tvorba databázy príliš neodrovnala (čo by nemala:) ), Môžete si do nej pridať ešte druhú tabuľku. Vďaka tomu si budeme môcť ďalej ukázať aj pokročilejšie otázky cez viac tabuliek. Ak chcete začať radšej jednoducho, môžete tento krok preskočiť rovnako ako pár ďalej ukázaných otázok.

Pridajte si rovnakým spôsobom tabuľku Category, ktorá bude reprezentovať kategórii slovíčok. Opäť jej dáme stĺpec Id, ktorému nastavíme Identity na True a potom ho urobíme primárnym kľúčom. Čo sa týka ďalších stĺpcov, bude tu iba jeden, opäť typu nvarchar(50) as názvom Title. To bude titulok kategórie (napr. "Počítače", "Zvířata" alebo "Ostatní"). Tabuľku uložíme ako Category:

Databázy v C # - ADO.NET

Opäť vytvoríme testovacie dáta:

Databázy v C # - ADO.NET

Teraz pridáme slovíčku väzbu na kategóriu, ktoré sa niekedy hovorí cudzí kľúč alebo relácie. Vráťme sa k našej tabuľke Word a pridajme ju ešte jeden stĺpec s názvom CategoryId. Bude typu int. V Properties mu nastavíme "Default Value or Binding" na 1. To je predvolená hodnota. Ďalej v pravom stĺpci Dizajnéri Kliknite pravým tlačidlom na položku "Foreign Keys", zvolíme "Add New Foreign Key" a pomenujte ho napríklad "FK_Word_Category":

Databázy v C # - ADO.NET

Tento cudzí kľúč (väzba) sa nám vygeneroval aj v T-SQL kódu:

Databázy v C # - ADO.NET

Tu nastavíme, že sa tabuľka Word pomocou stĺpca CategoryId pripojí na primárny kľúč tabuľky Category, ktorým je Id:

Databázy v C # - ADO.NET

Teraz databázy vie, že ak je napr. U slovíčka v stĺpci CategoryId hodnota 1, viaže sa k prvej kategórii. Všetko uložíme tlačidlom "Update". Znovu editujte záznamy v tabuľke Word a slovíčkam nastavte kategórii:

Databázy v C # - ADO.NET

Číslo je samozrejme primárny kľúč do tabuľky Category, 1 teda zodpovedá záznamu "Počítače", 2 "Zvířata" a 3 "Ostatní".


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 148x (519.5 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Úvod do databáz v C #
Všetky články v sekcii
Databázy v C # - ADO.NET
Preskočiť článok
(neodporúčame)
Prístupy pre prácu s relačnými databázami v .NET
Článok pre vás napísal Radek Vymětalík
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
...
Aktivity