Prvá databázová aplikácia v C# (LINQ to SQL)
V minulom dieli nášho seriálu tutoriálov o C# .NET sme si popísali rôzne prístupy pre prácu s databázou v objektových jazykoch a tiež technológie, ktoré sú v .NET frameworku na tieto účely obsiahnuté. Dnes si konečne vytvoríme svoju prvú databázovú aplikáciu v C# .NET.
Pripojenie k databáze z Visual Studia
Vo Visual Studio si vytvoríme nový projekt, Windows Form Application. Pomenujeme ju Slovnicek. Teraz otvoríme Server Explorer (vo verziách Express sa okno volá Database Explorer), klikneme pravým na Data Connections a zvolíme Add Connection.
V nasledujúcom dialógu skontrolujeme, že máme v DataSource nastavené "Microsoft SQL Server (SqlClient)". Do Server name zadáme "localhost\MENO_VASEHO_SERVERU" a dole vyberieme našu databázu SlovnicekDB. Potvrdíme.
Visual Studio o našej databáze vie a dokáže sa k nej pripojiť.
LINQ to SQL
My budeme na prácu s databázou používať technológiu LINQ to SQL. Už podľa názvu sa jedná o LINQ provider, ktorý umožňuje komunikovať s MS-SQL databázou pomocou technológie LINQ. Technológiu LINQ z minulých lekcií vieme používať.
LINQ to SQL je na používaní pomerne jednoduché ORM, vďaka ktorému budeme s riadkami z databázy pracovať ako s objektmi.
K projektu Slovníček si pripojíme nový item, LINQ to SQL Classes. Meno pokojne ponecháme na DataClasses, len vyprážame tú jedničku.
Otvorí sa nám prázdna plocha. K projektu sme teraz pridali triedy, ktoré predstavujú jednotlivé entity v databáze. Pre každú tabuľku bude v DataClasses trieda, ktorá ju reprezentuje. Trieda bude mať také vlastnosti, ako má tabuľka stĺpca. Ďalej nám umožní jednoducho používať relácie, ktoré v našej situácii s jedinou tabuľkou zatiaľ nevyužijeme. DataClasses za nás samozrejme vygeneruje Visual Studio, presnejšie nástroj DBMetal. Stačí otvoriť Server Explorer, označiť všetky tabuľky v databáze a myšou ich presunúť na bielu plochu DataClasses.
To je skutočne všetko. Teraz môžeme s databázou pracovať úplne objektovo. Pre lepšie pochopenie funkčnosti som pre vás pripravil obrázok. Naša aplikácia komunikuje iba s DataClasses, kde sú objekty s dátami, o viac sa my nestaráme. Na pozadí DataClasses komunikujú s databázou pomocou providera LINQ to SQL a naše objektové otázky sú automaticky prevádzané na čisté SQL, posielané databázu a výsledky z databázy sú opäť prevádzané na objekty a vrátené pomocou DataClasses.
Možno sa vám to zdá zložité, ono tiež zložité je, ale iba vo vnútri. Celá technológia je veľmi dobre odladená a jednoducho použiteľná, objektový komfort pri písaní aplikácií je veľmi príjemný, urýchľuje vývoj a sprehľadňuje kód.
Prvá databázová aplikácia
Poďme nakoniec konečne niečo naprogramovať. Prejdime do Form1.cs a na jeho plochu si natiahneme DataGridView, tú pomenujeme dataGridViewSlovicka. Dole umiestnime tlačidlo Načítaj, pomenované buttonNacti.
Práve kontrolka DataGridView sa dokonale hodí na zobrazenie dát z databázy. Vie toho naozaj veľa a dá sa veľmi dobre prispôsobovať.
Vo vnútri formulára si vytvorme tzv. dátový kontext. To je premenná, ktorá referencuje na objektovú štruktúru databázy. Kontext nám vygenerovalo Visual Studio a je súčasťou DataClasses. Pridajme si túto premennú do formulára:
public partial class Form1 : Form { DataClassesDataContext kontext = new DataClassesDataContext(); ...
Zavolaním konštruktora sa nám aplikácia k databáze pripojí. Parametre pripojenia môžeme v konštruktore bližšie špecifikovať alebo ich môžeme upraviť v súbore app.config, ktorý sa k nášmu projektu pridal vďaka LINQ to SQL Classes. Zatiaľ sa tým však nebudeme zaťažovať.
Naklikneme si tlačidlo buttonNacti, tu do zdroja dát dataGridView odkážeme kolekciu Words z kontextu:
dataGridViewSlovicka.DataSource = kontext.Words;
Áno, Visual Studio nám pri generovaní DataClasses vytvorilo pre každú tabuľku kolekciu. Kolekcia slovíčok (objektov typu Word) sa volá Words. V predvolenom nastavení dochádza k pluralizácii názvov, čo je veľmi intuitívne a prehľadné. Funguje to samozrejme len v angličtine, keby sme tabuľku pomenovali Slovicko, VS by došlo k názvu Slovickos, to nie je príliš pekné. Preto budeme databázu preferovať v angličtine. Narážame na ďalší problém s používaním českých identifikátorov, preto to vo svojich programoch nikdy nerobím, ale som vám sľúbil, že tutoriály budem písať po slovensky.
Aplikáciu spustíme a klikneme na tlačidlo:
Vidíme, že sme sa úspešne napojili na databázu a zobrazili si obsah tabuľky Word, teda kolekciu Words v kontexte z DataClasses.
Aplikácia je spolu s exportom databázy v prílohe.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 1010x (51.32 kB)
Aplikácia je vrátane zdrojových kódov v jazyku C#