Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

1. diel - Úvod do databáz v C# .NET

Vítam vás pri prvej lekcii kurzu o programovaní databázových aplikácií v C# .NET. Kurz spracováva pokročilú problematiku čo možno najjednoduchšie a s čo najviac príkladmi a ilustráciami. Preberieme v ňom teóriu aj prax a niekoľko prístupov, ktoré sa v C# .NET pre prácu s databázou používajú. Kurz popisuje prácu s MS-SQL databázou v jazyku C# .NET. Na sieti sa nachádza aj podrobnejší kurz len o MS-SQL databáze (nezávisle na jazyku).

Na čo databázu?

Možno vás napadlo, na čo vlastne potrebujeme nejakú databázu. Dáta by sme rovnako dobre mohli ukladať do nejakých textových súborov, binárok, XML alebo niečoho podobného. Určite by to nejako fungovalo, alebo nie?

RDBMS

RDBMS - Databázy v C# - ADO.NET

Označenie databázy je vlastne nepresné a v odbornej literatúre sa stretneme s označením RDBMS (Relation DataBase Management System). Slovensky je to preložené ako "systém riadenia bázy dát", čo znie naozaj hrozne a preto budeme ďalej používať označenie databázový stroj alebo RDBMS. Databázový stroj (teda tu MS-SQL) nie je len úložisko dát. Jedná sa o veľmi sofistikovaný a odladený nástroj, ktorý za nás rieši množstvo problémov a zároveň je extrémne jednoduchý na použitie. S databázou totiž komunikujeme jazykom SQL, ktorým sú v podstate ľudsky zrozumiteľné vety. Nad týmto jazykom vzniklo mnoho nadstavieb a niekedy sa už dokonca s SQL vôbec nestretneme. My si v kurze ukážeme rôzne prístupy a budeme s databázou komunikovať ako pomocou SQL, tak len ako s objektmi pomocou technológie LINQ.

Spolu s ukladaním dát je ale treba ďalej riešiť mnoho ďalších vecí. Asi by nás napadlo napr. zabezpečenie alebo optimalizácia výkonu. RDBMS toho ale robí ešte oveľa viac, rieši za nás problém súčasnej editácie rovnakej položky niekoľkými používateľmi v rovnaký okamih, ktorý by inak mohol zapríčiniť nekonzistenciu databázy. RDBMS dáta v tomto prípade zamkne a odomkne až po vykonaní zápisu. Ďalej umožňuje spájať niekoľko otázok do transakcií, kedy sa séria otázok vykoná vždy celá alebo vôbec. Nestane sa, že by sa vykonala len časť. Tieto vlastnosti databázového stroja sú zhŕňané skratkou ACID, poďme si ju vysvetliť.

ACID

ACID je akronym slov Atomicity (nedeliteľnosť), Consistency (validita), Isolation (izolácia) a Durability (trvanlivosť). Jednotlivé zložky majú nasledujúci význam:

  • Atomicity - Operácie v transakcii sa vykonajú ako jedna atomická (nedeliteľná) operácia. Tzn. že pokiaľ nejaká časť operácie zlyhá, vráti sa databáza do pôvodného stavu a žiadne časti transakcie nebudú vykonané. Reálny príklad je napr. prevod peňazí na bankovom účte. Pokiaľ sa nepodarí peniaze odpočítať z jedného účtu, nebudú ani pripísané na účet druhý. Inak by bola databáza v nekonzistentnom stave. Pokiaľ by sme si prácu s dátami riešili sami, mohlo by sa nám toto veľmi jednoducho stať.
  • Consistency - Stav databázy po dokončení transakcie je vždy konzistentný, teda validný podľa všetkých definovaných pravidiel a obmedzení. Nikdy nenastane situácia, že by sa databáza nachádzala v nekonzistentnom stave.
  • Isolation - Operácie sú izolované a navzájom sa neovplyvňujú. Ak sa zíde v jeden okamih viac dotazov na zápis do rovnakého riadku, sú vykonávané postupne, ako vo fronte.
  • Durability - Všetky zapísané dáta sú okamžite zapísané na trvanlivé úložiská (na pevný disk), v prípade výpadku elektrickej energie alebo iného prerušenia prevádzky RDBMS všetko zostane tak, ako bolo tesne pred výpadkom.

Databáza (presnejšie databázový stroj) je teda čierna skrinka, s ktorou naša aplikácia komunikuje a do ktorej ukladá všetky dáta. Jej použitie je veľmi jednoduché a je odladená tak, ako by sme si sami zápis dát v programe asi ťažko urobili. Vôbec sa nemusíme starať o to, ako sú dáta fyzicky uložené, s databázou komunikujeme pomocou jednoduchého dotazovacieho jazyka SQL, viď ďalej. V dnešnej dobe sa vôbec neoplatí zaťažovať sa otázkou ukladania dát, jednoducho siahneme po hotovej databáze, ktorých je obrovský výber a sú väčšinou zadarmo. O databáze občas hovoríme ako o 3. vrstve aplikácie (1. vrstva je užívateľské rozhranie, 2. vlastná logika aplikácie, 3. je práve dátová vrstva).

MS-SQL Server

Logo MS-SQL Server - Databázy v C# - ADO.NET

V C# sa pracuje takmer výhradne s databázou MS-SQL (niekedy sa technológia označuje ako T-SQL ako Transact SQL). Teoreticky je možné v C# pracovať s ľubovoľnou databázou (napr. SQLite, MySQL a podobne.) Prakticky sú však všetky nástroje a technológie optimalizované pre MS-SQL (ako inak, keď je od Microsoftu :-) ) a naopak nástroje pre iné databázy veľa ľudí nepoužíva, ich vývoj skončil alebo sú v alfaverziách a podobne. Výnimkou sú databázy Oracle, s ktorými Microsoft počíta, ale ktoré sú určené pre veľké podniky. MS-SQL nie je zlá databáza a je možné ju používať zadarmo. Keď si vyberieme práve tú, vyhneme sa mnohým problémom a vývoj aplikácie pôjde relatívne ľahko.

LocalDB vs. MS-SQL Server

V tomto kurze budeme pracovať s tzv. lokálnou databázou (LocalDB), ktorú je možné pridať do projektu cez samotné Visual Studio a bude uložená v jednom súbore. Možno ju tak ľahko prenášať a nemusí nám na danom stroji bežať komplexná služba. V minulosti bola táto verzia MS-SQL databázy označovaná ako Express, občas sa pre tieto typy databáz všeobecne tiež používa označenie embedded alebo portable. Táto databáza sa najčastejšie používa buď pri vývoji aplikácie a vo finálnej verzii je nahradená, alebo v kombinácii s technológiou Entity Framework ako lokálne úložisko dát.

Alternatívne je možné použiť aj plnohodnotný MS-SQL Server, ku ktorému si je možné doinštalovať ešte administračný nástroj SQL Server Management Studio pre tvorbu samotnej databázy. Toto riešenie sa však používa skôr na serveroch.

Príprava Visual Studia

Pre prácu s LocalDB je nutné mať vo Visual Studiu nainštalovanú sadu funkcií "Ukladanie a spracovanie dát" (Data storage and processing), ktorá spolu s nástrojmi pre prácu s databázou tiež obsahuje odľahčenú verziu MS-SQL Server Express 2016 LocalDB.

Ak danú sadu máme nainštalovanú, overíme kliknutím na položku Tools v aplikačnom menu Visual Studia, potom zvolíme položku Get Tools and Features.... Otvorí sa nám Visual Studio Installer, pomocou ktorého sa inštaluje nielen Visual Studio, ale aj pomocou neho môžeme doinštalovať sady funkcií. V záložke Workloads zídeme do časti Other Toolsets a uistíme sa, že tu máte zaškrtnutú sadu Data storage and processing, prípadne ju zaškrtneme a klikneme na Modify:

Kontrola instalace funkcie Data storage and processing vo VS - Databázy v C# - ADO.NET

Relačná databáza

MS-SQL je tzv. relačná databáza. Tento pojem označuje databázu založenú na tabuľkách. Každá tabuľka obsahuje položky jedného typu. Môžeme mať teda tabuľku users, ďalšiu tabuľku articles a ďalšie potrebné comments.

Databázovú tabuľku si môžeme predstaviť napríklad ako tabuľku v Exceli. Tabuľka users by vyzerala napríklad takto:

First name Last name Birth date Number of articles
John Smith 11.3.1984 17
Thomas Williams 1.2.1989 6
Joseph Miller 20.12.1972 9
Michael Moore 14.8.1990 1

Položky (konkrétne tu používatelia) ukladáme na jednotlivé riadky, stĺpce potom označujú atribúty (vlastnosti, ak chcete), ktoré položky majú. MS-SQL databáza je typovaná, to znamená, že každý stĺpec má pevne stanovený dátový typ (číslo, znak, krátky text, dlhý text, ...) a môže obsahovať hodnoty len tohto typu. Pokiaľ chceme s relačnou databázou rozumne pracovať, každý riadok v tabuľke by mal byť opatrený unikátnym identifikátorom. U užívateľov by to mohlo byť potrebné rodné číslo, oveľa častejšie sa však používajú identifikátory umelé, a to tak, že užívateľov jednoducho očíslujeme. K tomu sa dostaneme neskôr.

Slovo relačné označuje vzťah (anglicky relation). Ten je medzi tabuľkami alebo medzi entitami v jednej tabuľke. To si ale necháme na neskôr a zatiaľ budeme pracovať iba s jednou tabuľkou zároveň.

ADO.NET

ADO.NET je knižnica, ktorá zastrešuje technológie na prístup k dátam a prácu s nimi. Je súčasťou .NET frameworku. Obsahuje poskytovateľov dát, ktorí sú navrhnutí vždy pre konkrétny typ dátového zdroja. Najprv teda musíme vybrať vhodného poskytovateľa dát pre našu databázu. My už vieme, že budeme pracovať s databázou MS-SQL, ale mali by ste vedieť, že rovnakým spôsobom vie C# pracovať napríklad s databázami MS Access alebo Oracle.

Prehľad poskytovateľov dát

Poskytovateľ Menný priestor Popis
SQL System.Data.SqlCli­ent určené pre MS-SQL Server
OleDB System.Data.OleDb vhodné pre DB MS Access
ODBC System.Data.Odbc pre prístup k DB nezávisle od OS a typu databázy
Oracle System.Data.O­racleClient určené pre Oracle

Ďalších poskytovateľov si môžete stiahnuť a doinštalovať sami (napr. MySQL zo stránok https://dev.mysql.com/…nnector/net/)

Dnešnú lekciu ponechajme ako úvodnú a nainštalujte si vyššie spomínanú sadu funkcií do Visual Studia.

V budúcej lekcii, Vytvorenie lokálnej databázy vo Visual Studio, si vytvoríme databázu, ku ktorej sa budeme z C# pripájať.


 

Všetky články v sekcii
Databázy v C# - ADO.NET
Preskočiť článok
(neodporúčame)
Vytvorenie lokálnej databázy vo Visual Studio
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
4 hlasov
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 sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity