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

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

Vítám vás u první lekce kurzu o programování databázových aplikací v C# .NET. Kurz zpracovává pokročilou problematiku co možná nejjednodušeji a s co nejvíce příklady a ilustracemi. Probereme v něm teorii i praxi a několik přístupů, které se v C# .NET pro práci s databází používají. Kurz popisuje práci s MS-SQL databází v jazyce C# .NET. Na síti se nachází také podrobnější kurz jen o MS-SQL databázi (nezávisle na jazyce).

K čemu databázi?

Možná vás napadlo, k čemu vlastně potřebujeme nějakou databázi. Data bychom stejně dobře mohli ukládat do nějakých textových souborů, binárek, XML nebo něčeho podobného. Určitě by to nějak fungovalo, nebo ne?

RDBMS

RDBMS

Označení databáze je vlastně nepřesné a v odborné literatuře se setkáme s označením RDBMS (Relation DataBase Management System). Česky je to přeloženo jako "systém řízení báze dat", což zní opravdu hrozně a proto budeme dále používat označení databázový stroj nebo RDBMS. Databázový stroj (tedy zde MS-SQL) není jen úložiště dat. Jedná se o velmi sofistikovaný a odladěný nástroj, který za nás řeší spoustu problémů a zároveň je extrémně jednoduchý k použití. S databází totiž komunikujeme jazykem SQL, kterým jsou v podstatě lidsky srozumitelné věty. Nad tímto jazykem vzniklo mnoho nadstaveb a někdy se už dokonce s SQL vůbec nesetkáme. My si v kurzu ukážeme různé přístupy a budeme s databází komunikovat jak pomocí SQL, tak jen jako s objekty pomocí technologie LINQ.

Spolu s ukládáním dat je ale třeba dále řešit mnoho dalších věcí. Asi by nás napadlo např. zabezpečení nebo optimalizace výkonu. RDBMS toho ale dělá ještě mnohem více, řeší za nás problém současné editace stejné položky několika uživateli ve stejný okamžik, který by jinak mohl zapříčinit nekonzistenci databáze. RDBMS data v tomto případě zamkne a odemkne až po vykonání zápisu. Dále umožňuje spojovat několik dotazů do transakcí, kdy se série dotazů vykoná vždy celá nebo vůbec. Nestane se, že by se vykonala jen část. Tyto vlastnosti databázového stroje jsou shrnovány zkratkou ACID, pojďme si ji vysvětlit.

ACID

ACID je akronym slov Atomicity (nedělitelnost), Consistency (validita), Isolation (izolace) a Durability (trvanlivost). Jednotlivé složky mají následující význam:

  • Atomicity - Operace v transakci se provedou jako jedna atomická (nedělitelná) operace. Tzn., že pokud nějaká část operace selže, vrátí se databáze do původního stavu a žádné části transakce nebudou provedeny. Reálný příklad je např. převod peněz na bankovním účtu. Pokud se nepodaří peníze odečíst z jednoho účtu, nebudou ani připsány na účet druhý. Jinak by byla databáze v nekonzistentním stavu. Pokud bychom si práci s daty řešili sami, mohlo by se nám toto velmi jednoduše stát.
  • Consistency - Stav databáze po dokončení transakce je vždy konzistentní, tedy validní podle všech definovaných pravidel a omezení. Nikdy nenastane situace, že by se databáze nacházela v nekonzistentním stavu.
  • Isolation - Operace jsou izolované a navzájem se neovlivňují. Pokud se sejde v jeden okamžik více dotazů na zápis do stejného řádku, jsou vykonávány postupně, jako ve frontě.
  • Durability - Všechna zapsaná data jsou okamžitě zapsána na trvanlivá úložiště (na pevný disk), v případě výpadku el. energie nebo jiného přerušení provozu RDBMS vše zůstane tak, jak bylo těsně před výpadkem.

Databáze (přesněji databázový stroj) je tedy černá skříňka, se kterou naše aplikace komunikuje a do které ukládá veškerá data. Její použití je velmi jednoduché a je odladěna tak, jak bychom si sami zápis dat v programu asi těžko udělali. Vůbec se nemusíme starat o to, jak jsou data fyzicky uložena, s databází komunikujeme pomocí jednoduchého dotazovacího jazyka SQL, viz dále. V dnešní době se vůbec nevyplatí zatěžovat se otázkou ukládání dat, jednoduše sáhneme po hotové databázi, kterých je obrovský výběr a jsou většinou zadarmo. O databázi občas hovoříme jako o 3. vrstvě aplikace (1. vrstva je uživatelské rozhraní, 2. vlastní logika aplikace, 3. je právě datová vrstva).

MS-SQL Server

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

V C# se pracuje téměř výhradně s databází MS-SQL (někdy se technologie označuje jako T-SQL jako Transact SQL). Teoreticky lze v C# pracovat s libovolnou databází (např. SQLite, MySQL a podobně.) Prakticky jsou však všechny nástroje a technologie optimalizovány pro MS-SQL (jak jinak, když je od Microsoftu :-) ) a naopak nástroje pro jiné databáze moc lidí nepoužívá, jejich vývoj skončil nebo jsou v alfaverzích a podobně. Výjimkou jsou databáze Oracle, se kterými Microsoft počítá, ale které jsou určené pro velké podniky. MS-SQL není špatná databáze a lze ji používat zadarmo. Když si vybereme právě tu, vyhneme se mnoha problémům a vývoj aplikace půjde relativně snadno.

localDB vs. MS-SQL Server

V tomto kurzu budeme pracovat s tzv. lokální databází (localDB), kterou si lze jednoduše přidat do projektu přes samotné Visual Studio a bude uložena v jednom souboru. Lze ji tak snadno přenášet a nemusí nám na daném stroji běžet komplexní služba. V minulosti byla tato verze MS-SQL databáze označována jako Express, občas se pro tyto typy databází obecně také používá označení embedded nebo portable.

Alternativně lze použít také plnohodnotný MS-SQL Server, ke kterému si lze doinstalovat ještě administrační nástroj SQL Server Management Studio pro tvorbu samotné databáze. Toto řešení se ovšem používá spíše na serverech.

Příprava Visual Studia

Pro práci s localDB je nutné mít ve Visual Studiu nainstalovanou sadu funkcí "Ukládání a zpracování dat" (Data storage and processing), která spolu s nástroji pro práci s databází také obsahuje odlehčenou verzi MS-SQL Server Express 2016 LocalDB.

Jestli danou sadu máme nainstalovanou, ověříme kliknutím na položku Tools v aplikačním menu Visual Studia, poté zvolíme položku "Get Tools and Features". Otevře se nám Visual Studio Installer, pomocí kterého se instaluje nejen Visual Studio, ale také pomocí něj můžeme doinstalovat sady funkcí. Ujistěte se, že máte zaškrtnutou sadu "Ukládání a zpracování dat", případně ji zaškrtněte a klikněte na "Změnit":

Relační databáze

MS-SQL je tzv. relační databáze. Tento pojem označuje databázi založenou na tabulkách. Každá tabulka obsahuje položky jednoho typu. Můžeme mít tedy tabulku uzivatele, další tabulku clanky a další třeba komentare.

Databázovou tabulku si můžeme představit třeba jako tabulku v Excelu. Tabulka uzivatele by mohla vypadat asi takto:

Jméno Příjmení Datum narození Počet článků
Jan Novák 11.3.1984 17
Tomáš Marný 1.2.1989 6
Josef Nový 20.12.1972 9
Michaela Slavíková 14.8.1990 1

Položky (konkrétně zde uživatelé) ukládáme na jednotlivé řádky, sloupce pak označují atributy (vlastnosti, chcete-li), které položky mají. MS-SQL databáze je typovaná, to znamená, že každý sloupec má pevně stanovený datový typ (číslo, znak, krátký text, dlouhý text, ...) a může obsahovat hodnoty jen tohoto typu. Pokud chceme s relační databází rozumně pracovat, každý řádek v tabulce by měl být opatřený unikátním identifikátorem. U uživatelů by to mohlo být třeba rodné číslo, mnohem častěji se však používají identifikátory umělé a to tak, že uživatele prostě očíslujeme. K tomu se dostaneme později.

Slovo relační označuje vztah (anglicky relation). Ten je mezi tabulkami nebo mezi entitami v jedné tabulce. To si ale necháme na později a zatím budeme pracovat jen s jednou tabulkou zároveň.

ADO.NET

ADO.NET je knihovna, která zastřešuje technologie pro přístup k datům a práci s nimi. Je součástí .NET frameworku. Obsahuje poskytovatele dat, kteří jsou navržení vždy pro konkrétní typ datového zdroje. Nejprve tedy musíme vybrat vhodného poskytovatele dat pro naši databázi. My již víme, že budeme pracovat s databází MS-SQL, ale měli byste vědět, že stejným způsobem umí C# pracovat třeba s databázemi MS Access nebo Oracle.

Přehled poskytovatelů dat

Poskytovatel Jmenný prostor Popis
SQL System.Data.SqlCli­ent určeno pro MS-SQL Server
OleDB System.Data.OleDb vhodné pro DB MS Access
ODBC System.Data.Odbc pro přístup k DB nezávisle na OS a typu databáze
Oracle System.Data.O­racleClient určeno pro Oracle

Další poskytovatele si můžete stáhnout a doinstalovat sami (např. MySQL ze stránek http://dev.mysql.com/…nnector/net/)

Dnešní lekci ponechme jako úvodní a nainstalujte si výše zmíněnou sadu funkcí do Visual Studia.

V příští lekci, Vytvoření lokální databáze ve Visual Studio, si vytvoříme databázi, ke které se budeme z C# připojovat.


 

Všechny články v sekci
Databáze v C# - ADO.NET
Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
21 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn university Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity (8)

 

 

Komentáře
Zobrazit starší komentáře (10)

Avatar

Redaktor
Avatar
:13.3.2013 20:38

souhlasím, že je to minimálně hodně podobné (ne-li stejné) metro stylu win8 :) co se týče toho erroru píše to něco jako že to nemá přístup k registru či tak něco :D

Editováno 13.3.2013 20:38
 
Odpovědět
13.3.2013 20:38
Avatar
relycanx
Člen
Avatar
relycanx:4.4.2013 18:24

Tak to jsem opravdu netušil, že instalace serveru MS-SQL express 2008, bude takový porod. Když jsem si z microsoftu stáhnul instalační balíček, tak se mi objevilo jakési mega instalační centrum, kde jsem se to pokusil nainstalovat hned prvním, nejjednodušším způsobem. asi stokrát jsem kliknul, potvrzoval nabídku po nabídce a modlil se ať se to někde nezasekne a samozřejmě že se to zaseklo :/ u nabídky "server configuration" na řádku "SQL server databaze engine" to po mě chce nějaké jméno a heslo, ale ať už tam zadám cokoliv, nebo nic, tak to furt píše chybu "The specified credentials for the SQL Server service are not valid. To continue, provide a valid account and password for the SQL Server service." Nevíte prosím co s tím?

 
Odpovědět
4.4.2013 18:24
Avatar
Michal Žůrek - misaz:11.7.2013 10:22

Ahoj, do článku by se odilo dodat, že kdo už VS2010 nemá tak aby to mohl nainstalovat potřebuje ještě Visual Studio 2010 Shell, nemusí tedy instalovat celé visual studio, ale stačí pouze to shell. Dále pak k tomu budete ještě potřebovat Update 1 pro celé VS2010.

 
Odpovědět
11.7.2013 10:22
Avatar
Odpovídá na Michal Žůrek - misaz
Libor Šimo (libcosenior):21.6.2015 20:17

Michale, keď mám nainštalovaný MS VS 2013 Express, treba mi inštalovať SQL Server ak chcem používať Management Studio?

Odpovědět
21.6.2015 20:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Michal Žůrek - misaz:21.6.2015 20:24

Managment Studio je součástí SQL Server.

 
Odpovědět
21.6.2015 20:24
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Odpovídá na Michal Žůrek - misaz
Libor Šimo (libcosenior):21.6.2015 20:31

A mám naištalovať SQL Server 2012 alebo vyšší?

Odpovědět
21.6.2015 20:31
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Richard Koplinger:1.11.2017 12:10

"Pokud se nepodaří peníze odečíst z jednoho účtu, nebudou ani připsány na účet druhý. Jinak by byla databáze v konzistentním stavu." Nemalo tam byť nekonzistentním?

 
Odpovědět
1.11.2017 12:10
Avatar
x10102
Člen
Avatar
x10102:3.4.2019 12:16

Asi celkem hloupá otázka :D, ale když si musím nainstalovat Microsoft SQL Server a pak budu tu aplikaci např. prodávat, musí si uživatel taky nainstalovat SQL server?

Odpovědět
3.4.2019 12:16
We use pointers because it's easier to give someone an address to your home than to give a copy of your home to ...
Avatar
Odpovídá na x10102
Michal Štěpánek:3.4.2019 15:03

Pokud budeš mít tu DB k appce v MSSQL, tak ano, musí...

Odpovědět
3.4.2019 15:03
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
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.

Zobrazeno 10 zpráv z 20. Zobrazit vše