Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

5. diel - Pripojená databázová aplikácia vo VB.NET

V minulej lekcii, Prístupy pre prácu s relačnými databázami vo VB.NET , sme si uviedli prístupy pre prácu s relačnou databázou, najmä DataSet a technológiu LINQ to SQL.

V dnešnom Databáze-ADO.NET tutoriále si uvedieme základy práce s databázou pomocou pripojeného prístupu.

Pripojovací reťazec

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

Získanie pripojovacieho reťazca

Pripojovací reťazec je možné vo Visual Studiu získať viacerými spôsobmi. Jedným zo spôsobov je kliknúť v okne Server Explorer na názov databázy a zvoliť Properties. Otvorí sa nám okno Properties, kde nájdeme ConnectionString v tomto formáte:

Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=C:\Users\nazevUzivatele\SlovnicekDB.mdf;Initial Catalog=SlovnicekDB;Integrated Security=True

Vypísanie pripojovacieho reťazca

V prípade, že sme databázu pripojili cez Data Sources a zaškrtli možnosť uloženia pripojovacieho reťazca do nastavenia projektu, tak k nemu môžeme jednoducho pristupovať rovno v kóde cez triedu Settings. Vypíšme si ho do konzoly:

Dim connectionString As String = My.Settings.SlovnicekDBConnectionString
Console.WriteLine(connectionString)

Výpis do konzoly vyzerá takto:

Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\SlovnicekDB.mdf;Initial Catalog=SlovnicekDB;Integrated Security=True

Vlastnosti AttachDbFilename a InitialCatalog

Vlastnosť InitialCatalog odovzdáva názov databázy, ku ktorej sa chceme pripojiť. Používa sa pre akúkoľvek databázu (nielen lokálnu).

Vlastnosť AttachDbFilename sa používa na pripojenie k lokálnej databáze s príponou .mdf. Tejto vlastnosti sa odovzdáva cesta k súboru lokálnej databázy. Pripojovací reťazec môže obsahovať obe vlastnosti naraz alebo len jednu z nich. V .NET Framework aplikácii musí byť vždy u lokálnej databázy použitá vlastnosť AttachDbFilename.

Založenie projektu

Založíme si nový projekt, konzolovú aplikáciu. Na začiatok projektu si deklarujeme menný priestor Imports System.Data.SqlClient.

Menný priestor System.Data.SqlClient obsahuje triedy pre prácu s SQL databázami.

Trieda SQLConnectionStringBuilder

Každý poskytovateľ dát z ADO.NET potrebuje trochu iné údaje, a preto sa niekedy pripojovací reťazec generuje pomocou triedy SqlConnectionStringBuilder. 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 napríklad neskôr. V kurze si povieme od všetkého trochu. Nie je účelom vás odradiť a vyvolať dojem, aké sú databázy zložité. Ide o to, aby ste mali prehľad.

Zostavenie pripojovacieho reťazca

S využitím triedy SQLConnectionStrigBuilder by sme zostavili pripojovací reťazec k našej cvičnej databáze SlovnicekDB takto:

Dim csb As SqlConnectionStringBuilder = New SqlConnectionStringBuilder()
csb.DataSource = "=(localdb)\MSSQLLocalDB"
csb.InitialCatalog = "SlovnicekDB"
csb.IntegratedSecurity = True
Dim připojovaciRetezec = csb.ConnectionString

Pripojenie k databáze SlovnicekDB

Akonáhle máme pripojovací reťazec, môžeme sa pokúsiť o pripojenie k databáze.

Test spojenia s databázou

K databáze sa pokúsime pripojiť pomocou inštancie triedy SqlConnection, v ktorej konštruktoru odovzdáme pripojovací reťazec. Pripojenie potom otvoríme zavolaním metódy Open():

Dim connectionString As String = "Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=SlovnicekDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
Using pripojeni As SqlConnection = New SqlConnection(connectionString)
    pripojeni.Open()
    Console.WriteLine("Aplikácia sa úspešne pripojila k databáze.")
End Using

Je dobrým zvykom všetky databázové objekty tvoriť v bloku Using, aby došlo k rýchlemu zatvoreniu nepotrebných spojení. Spojenie sa necháva otvorené len pri desktopových aplikáciách, kde to potom vyžaduje nejaký databázový wrapper, typicky realizovaný statickou triedou.

Úspešne sme sa pripojili k databáze:

Konzolová aplikácia
Aplikace se úspěšně připojila k databázi.

Databázové príkazy

Databázové príkazy sú zastúpené triedou SqlCommand. Umožňujú spustiť nad pripojenou databázou akýkoľvek SQL dotaz.

Aby sme mohli triedu SqlCommand použiť, musíme poznať syntax jazyka SQL. Tu si použitú syntax popíšeme len skrátene.

Pri novej inštancii triedy SqlCommand musíme naplniť dve základné vlastnosti: Connection a CommandText. Do vlastnosti CommandText budeme písať SQL dotaz. SQL dotazy budeme spúšťať metódami ExecuteReader(), ExecuteScalar() alebo ExecuteNonQuery().

Metóda ExecuteReader()

Metódu ExecuteReader() využijeme vtedy, ak SQL dotaz vracia množinu dát. Napr. väčšina príkazov SELECT.

Metóda ExecuteScalar()

Pre metódu ExecuteScalar() nájdeme uplatnenie, ak SQL dotaz vracia jedinú hodnotu. Napr. príkaz SELECT s agregačnou funkciou (počet všetkých slovíčok).

Metóda ExecuteNonQuery()

Metódu ExecuteNonQuery() použijeme na spúšťanie dotazov, ktoré nevracajú žiadnu hodnotu. Ide napr. o príkazy INSERT, UPDATE, DELETE. Návratová hodnota tejto metódy nesie informáciu o počte ovplyvnených riadkov.

Výpis z tabuľky Word

Pod náš príkaz Console.WriteLine("Aplikace se úspěšně připojila k databázi.") si teraz napíšeme kód, ktorým zistíme počet záznamov v tabuľke Word a vypíšeme ho na obrazovku:

Dim prikaz As SqlCommand = New SqlCommand()
prikaz.Connection = pripojeni
prikaz.CommandText = "SELECT COUNT(*) FROM Word"
Dim pocetSlovicek As Integer = prikaz.ExecuteScalar()
pripojeni.Close()
Console.WriteLine("Počet slovíčok v Databáze je {0}", pocetSlovicek)

SQL klauzula sa väčšinou píšu veľkými písmenami.

Výsledok:

Konzolová aplikácia
Aplikace se úspěšně připojila k databázi.
Počet slovíček v Databázi je 6

Otázka začína slovom SELECT (teda vyber). Ďalej nasleduje COUNT(*), čí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.

Počet záznamov v tabuľke nikdy nezisťujeme tak, že si načítame úplne všetky riadky aj s dátami a tie potom spočítame. Vrátený výsledok je rovnaký, ako pri použití príkazu COUNT. Lenže by sme zbytočne zaťažili databázu načítaním hodnôt, ktoré vôbec nevyužijeme.

V nasledujúcej lekcii, SqlDataReader a pripojená databáza vo VB.NET , sa naučíme čítať riadky z databázy pomocou triedy SqlDataReader a používať parametrizované otázky, ktoré znemožňujú útok SQL injection.


 

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é 10x (1006.89 kB)
Aplikácia je vrátane zdrojových kódov v jazyku VB.NET

 

Predchádzajúci článok
Prístupy pre prácu s relačnými databázami vo VB.NET
Všetky články v sekcii
Databáza vo VB.NET - ADO.NET
Preskočiť článok
(neodporúčame)
SqlDataReader a pripojená databáza vo VB.NET
Článok pre vás napísal Stanislav Zita
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity