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 pre tieto účely obsiahnuté. Dnes si konečne vytvoríme svoju prvú databázovú aplikáciu v C# .NET.
Pripojenie databázy z Visual Studia
Vo Visual Studio si vytvoríme nový projekt, Windows Form Application. Pomenujeme ju slovníček. 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_vášho_servera" 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 pre 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áz pomocou technológie LINQ. Technológiu LINQ z minulých lekcií vieme používať.
LINQ to SQL je na používanie pomerne jednoduché ORM, vďaka ktorému budeme s riadky 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 zmažeme tú jednotku.
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ĺpce. Ď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ší je presunúť na bielu plochu DataClasses.
To je naozaj 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 Provider LINQ to SQL a naše objektovej 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 vracajú sa 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 natiahnite DataGridView, tú pomenujeme dataGridViewSlovicka. Nadol umiestnime tlačidlo Načítaj, pomenované buttonNacti.
Práve kontrolka DataGridView sa dokonale hodí k zobrazenie dát z databázy. Vie toho naozaj veľa a možno ju veľmi dobre prispôsobovať.
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účasti DataClasses. Pridajme si túto premennú do formulára:
public partial class Form1 : Form { DataClassesDataContext kontext = new DataClassesDataContext(); ...
Zavolaním konstruktoru sa nám aplikácie k databáze pripojí. Parametre pripojenia môžeme v konstruktoru 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ť.
Naklikne si tlačidlo buttonNacti, tu do zdroja údajov 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 pluralite názvov, čo je veľmi intuitívne a prehľadné. Funguje to samozrejme len v angličtine, keby sme tabuľku pomenovali slovíčkami, 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 slovenských identifikátorov, preto to vo svojich programoch nikdy nerobím, však 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#