1. díl - Úvod do databází v C#

C# .NET Databáze Úvod do databází v C#

Vítám vás u prvního článku seriálu o programování databázových aplikací v C# .NET. Seriál 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# pro práci s databází používají. Seriál popisuje práci s MS-SQL databází v jazyce C# .NET. Na síti se nachází také podrobnější seriál 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?

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 budu 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 my se s ním v seriálu dokonce vůbec nesetkáme (pokud SQL neovládáte, nebudete to ani potřebovat), budeme s databází pracovat jako s objekty pomocí technologie LINQ to SQL, od toho jak jsou data uložena nebo vyhledávána budeme plně odstíněni, bude to za nás řešit databáze.

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 konzistentní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

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 MS počítá, ale které jsou určené pro velké podniky a pro nás se zcela určitě nehodí. 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. Abychom mohli s databází pracovat, potřebujeme mít nainstalovaný MS-SQL Server, opět platí, že verze Express je s minimálními omezeními zadarmo. Já zde používám verzi 2008, ale klidně si stáhněte novější, zejména pokud používáte např. Visual Studio 2012, stahujte Microsoft SQL Server 2012 Express. Pravděpodobně budete dotázáni na výběr balíčku, stáhněte ten největší, který obsahuje jak databázi, tak Management Studio, což je administrační nástroj, který budeme k tvorbě databáze používat.

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:

Tabulka uživatelů v Excelu

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 jindy 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íte vybrat vhodného poskytovatele dat pro naši databázi. My již víme, že budeme pracovat s databází MS-SQL, ale je 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

Název poskytovatele Jmenný prostor Popis
SQL System.Data.SqlCli­ent určeno pro 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í článek ponechme jako úvodní, nainstalujte si MS-SQL Server a příště si vytvoříme databázi, ke které se budeme z C# připojovat.


 

  Aktivity (1)

Článek pro vás napsal David Čápka
Avatar
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 College Autor se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.

Jak se ti líbí článek?
Celkem (10 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Databáze v C# - ADO.NET

 

 

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

Avatar
Vojtěch Pospíchal:

Ano ale dej si do jednoho okna VS 2010 o dalšího 2012 a řekni mi které z Visual studií se více blíží standartům metra.

 
Odpovědět 13.3.2013 18:51
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Vojtěch Pospíchal
Petr Nymsa:

Stále nevidím podobnost s Metro aplikacemi. POkud nemyslíš obdélníková tlačítka. VS 2012 má mírně překopaný layout, to je fakt, ale stále to vypadá jako klasická desktop aplikace

Odpovědět 13.3.2013 19:17
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Vojtěch Pospíchal:

Ano ale podívej se na barevnou paletu layout. Další příklad jsou tlačítka zavřít minimalizovat atd....

 
Odpovědět 13.3.2013 19:43
Avatar
Darkmagic
Redaktor
Avatar
Odpovídá na Vojtěch Pospíchal
Darkmagic:

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
Nejhorší je, když myslíš, že víš
Avatar
relycanx
Člen
Avatar
relycanx:

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):

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
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Libor Šimo (libcosenior):

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):

Managment Studio je součástí SQL Server.

Odpovědět 21.6.2015 20:24
Nesnáším {}, proto se jim vyhýbám.
Avatar
Odpovídá na Michal Žůrek (misaz)
Libor Šimo (libcosenior):

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
Odpovědět 21.6.2015 20:35
Nesnáším {}, proto se jim vyhýbám.
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 17. Zobrazit vše