IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

4. diel - Pripojená databázová aplikácia v C # .NET

V minulej lekcii, Prístupy pre prácu s relačnými databázami v .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 v C# .NET tutoriálu ukážeme základy práce s databázu pomocou pripojeného prístupu.

Pozn .: Všade v ďalšom texte, kde sa pred názvom triedy objavia *, ju môžete nahradiť príslušným poskytovateľom dát.

Založte si nový projekt, konzolovú aplikáciu, ktorú pomenujte SlovickaSQL.

Získanie ConnectionString

Aby ste sa mohli k DB pripojiť, potrebujete tzv. ConnectionString. To je reťazec, ktorý obsahuje údaje potrebné na pripojenie k databáze. Typicky je tu názov databázy a prípadne heslo.

Vo Visual Studio si prezrite Database Explorer (View -> Other Windows -> Database Explorer), v starších verziách VS sa toto okno volá Server Explorer. Pridáme nové pripojenie a v nasledujúcom dialógu skontrolujeme, že máme v DataSource nastavené "Microsoft SQL Server (SqlClient)". Do Server name zadáme "localhost\JMENO_VASEHO_SERVERU" a dole vyberieme našu databázu SlovnicekDB. Spojenie môžete otestovať tlačidlom Test Connection. Potvrdíme.

Akonáhle nové spojenie v Database Exploreri označíte a pravým zvolíte Properties, bude vám zobrazený ConnectionString. Ten si niekam skopírujte, môj vyzerá takto:

Data Source=localhost\MSSQLSERVER2008;Initial Catalog=SlovnicekDB;Integrated Security=True

Váš SQL server sa bude dosť možno menovať SQLEXPRESS miesto MSSQLSERVER2008.

SQLConnection­StringBuilder

Každý poskytovateľ dát z ADO.NET potrebuje trochu iné údaje a preto sa niekedy pripojovací reťazec generuje pomocou triedy *ConnectionStringBuilder. Stačí vytvoriť inštanciu tejto triedy a naplniť jej vlastnosti požadovanými hodnotami. Výsledný reťazec bude dostupný práve vo vlastnosti ConnectionString. Ak nechcete riešiť kompatibilitu s ďalšími poskytovateľmi, môžete tento krok preskočiť a vrátiť sa k nemu treba neskôr. V kurze si povieme od všetkého trochu, účelom nie je aby vás to odradilo a vyvolalo dojem, ako sú databázy zložité, ale aby ste mali prehľad.

Príklad 1

S využitím triedy SQLConnectionStrigBuilder zostavte pripojovací reťazec k našej cvičné databáze SlovnicekDB.

Riešenie

SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
csb.DataSource = @"localhost\SQLEXPRESS";
csb.InitialCatalog = "SlovnicekDB";
csb.IntegratedSecurity = true;
string pripojovaciRetezec = csb.ConnectionString;

Pozn .: Nezabudnite otvoriť príslušný menný priestor (using System.Data.SqlClient;).

Pripojenie

Akonáhle máme ConnectionString, môžeme sa k DB pripojiť. To urobíme vytvorením inštancie triedy *Connection, ktoré ConnectionString odovzdáme v konstruktoru. Pripojenie potom otvorte zavolaním metódy Open(). Je dobrým zvykom všetky databázové objekty tvoriť v bloku using, aby došlo k rýchlemu zatvorenie nepotrebných spojenie. Druhým prístupom je nechávať spojenie otvorené, čo sa robí len u desktopových aplikácií a vyžaduje to nejaký databázový wrapper, typicky realizovaný statickú triedou.

Príklad 2

Otestujte spojenie s databázou s pomocou pripojovacieho reťazca z príkladu 1. Vypíšte do konzoly, či sa spojenie podarilo otvoriť alebo nie.

Riešenie

string connectionString = @"Data Source=localhost\MSSQLSERVER2008;Initial Catalog=SlovnicekDB;Integrated Security=True";
using (SqlConnection pripojeni = new SqlConnection(connectionString))
{
    pripojeni.Open();
    Console.WriteLine("Aplikace se úspěšně připojila k databázi.");
}
Console.ReadKey();

výsledok:

Úspešné pripojenie databázy v C# .NET - Databázy v C # - ADO.NET

Ďalšie kód budeme písať pod pripojeni.Open();.

Databázové príkazy

Databázové príkazy sú zastúpené triedou *Command. Umožňujú spustiť nad pripojenou databázou akýkoľvek SQL dotaz. Pre ich vytvorenie teda musíte poznať syntax jazyka SQL (budem sa ich snažiť trochu popísať aj tu, avšak SQL je na ITnetwork venovaných hneď niekoľko sekcií). U novej inštancie triedy *Command musíte naplniť 2 základné vlastnosti - Connection (pozri príklad 2) a CommandText. Ten bude práve obsahovať SQL dotaz. Potom môžete príkaz spustiť. K spusteniu slúži metódy ExecuteReader(), ExecuteScalar() a ExecuteNonQuery(). Tú prvú využijete vtedy, ak SQL dotaz vracia množinu dát (väčšina select, napr. Dotaz na jedno alebo viac slovíčok). Druhá nájde svoje uplatnenie, ak SQL dotaz vracia jedinú hodnotu (typicky SELECT s agregačné funkcií, napr. Počet všetkých slovíčok). Posledný sa používa na spúšťanie dotazov, ktoré nevracajú žiadnu hodnotu (INSERT, UPDATE, DELETE, napr. Vloženie slovíčka). Jej návratová hodnota nesie informáciu o počte "ovplyvnených" riadkov.

Príklad 3

Vytvorte príkaz, ktorý z pripojenej databázy z príkladu 2 získa počet záznamov v tabuľke Word a vypíše ho na obrazovku.

Riešenie

SqlCommand prikaz = new SqlCommand();
prikaz.Connection = pripojeni;
prikaz.CommandText = "SELECT COUNT(*) FROM Word";
int pocetSlovicek = (int)prikaz.ExecuteScalar();  // metoda vrací typ object - je potřeba převést na int
pripojeni.Close();
Console.WriteLine("Počet slovicek v DB je {0}", pocetSlovicek);

výsledok:

Získanie počtu záznamov v databáz v C# ADO .NET - Databázy v C # - ADO.NET

Otázka začína slovom SELECT (teda vyber). SQL klauzula sa väčšinou píšu veľkými písmenami. Ďalej nasleduje COUNT(*), tým hovoríme, že nás zaujíma počet. Hviezdička označuje, že chceme počítať s ohľadom na všetky stĺpce. FROM Word označuje, že dáta vyberáme z tabuľky Word. Jednoduché, že? Mimochodom, SQL sa predtým volalo SEQUEL, kde ono EQUEL označovalo anglický dopytovací jazyk. Každý dotaz vyzerá preto ako jednoduchá anglická veta.

Pozn .: Niektorí začiatočníci zisťujú počet záznamov v tabuľke tak, že si načítajú úplne všetky riadky is dátami a tie potom spočítajú (riadky sa naučíme načítavať nabudúce). Vrátený výsledok je síce rovnaký ako výsledok pri použití COUNT, lenže sme databázu zbytočne zaťažili načítaním hodnôt, ktoré vôbec nevyužijeme. Medzi "načítať jedno číslo" alebo "načítať milión slovíčok len preto, aby sme zistili, že ich je milión" je veľký výkonový rozdiel :)

V budúcej lekcii, SqlDataReader a pripojené databázy v C # .NET , si z databázy teda načítame nejaká slovíčka.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 922x (1.03 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Prístupy pre prácu s relačnými databázami v .NET
Všetky články v sekcii
Databázy v C # - ADO.NET
Preskočiť článok
(neodporúčame)
SqlDataReader a pripojené databázy v C # .NET
Článok pre vás napísal JOF
Avatar
Užívateľské hodnotenie:
2 hlasov
Aktivity