Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.

6. diel - Databázy v C # .NET - INSERT, UPDATE, DELETE a COUNT

V minulej lekcii, Kvíz - Databáza, prístupy, pripojená aplikácia v C#- ADO.NET , sme sa naučili čítať dáta z databázy pomocou SqlDataReader. Tiež sme sa naučili používať parametrizované otázky, ktoré znemožňujú útok SQL injection. Dnes si v C# .NET tutoriálu skúsime obsah databázy meniť.

Vkladanie, mazanie a editácia hodnôt

Základné databázové operácie sa často označujú skratkou CRUD. Jedná sa o operácie Create (vytvoriť), Read (čítať), Update (aktualizovať), Delete (odstrániť). Minule sme si ukázali operáciu Read. Už vieme, že dáta z databázy čítame príkazom SELECT a potrebujeme k tomu *DataReader.

Insert

Výzva užívateľa na zadanie slovíčka anglicky a česky. Nové slovíčko vložíme do databázy.

Console.WriteLine("Zadej nové slovíčko anglicky");
string anglicky = Console.ReadLine();
Console.WriteLine("Zadej nové slovíčko česky");
string cesky = Console.ReadLine();
string dotaz = "INSERT INTO Word (English, Czech) VALUES (@anglicky, @cesky)";
using (SqlCommand sqlDotaz = new SqlCommand(dotaz, spojeni))
{
    sqlDotaz.Parameters.AddWithValue("@anglicky", anglicky);
    sqlDotaz.Parameters.AddWithValue("@cesky", cesky);
    int radku = sqlDotaz.ExecuteNonQuery();
    Console.WriteLine(radku);
}

SQL dotaz pre vloženie nového riadku do tabuľky začína príkazom INSERT INTO, nasleduje názov tabuľky. V zátvorkách vypíšeme názvy stĺpcov, do ktorých vkladáme hodnoty. Za klauzulu VALUES vypíšeme opäť do zátvorky hodnoty. Nemalo by vás prekvapiť, že použijeme opäť parametre.

Otázka vložíme do inštancie triedy SqlCommand. Dodáme mu potrebné parametre a spustíme ho metódou ExecuteNonQuery(). Metóda vracia počet ovplyvnených riadkov, pre overenie, že vloženie prebehlo, si musí byť výpis do konzoly.

Vloženie riadku do databázy v C# ADO .NET - Databázy v C # - ADO.NET

ExecuteNonQuery() vrátila hodnotu 1. Môžeme spustiť pôvodný kód našej aplikácie, ktorý vypisoval všetky slovíčka alebo nahliadnuť do Microsoft SQL Management Studia. Vidíme, že klávesnica je novo medzi slovíčkami:

Microsoft SQL management Studio Express - Databázy v C # - ADO.NET

Dele

Prejdime k mazanie záznamov. Oproti vkladanie nie je v podstate žiadny rozdiel, len som chcel, aby sme si pre úplnosť ukázali všetky otázky z CRUD.

Console.WriteLine("Zadej anglické slovíčko, které chceš vymazat");
string anglicky = Console.ReadLine();
string dotaz = "DELETE FROM Word WHERE Anglicky=@anglicky";
using (SqlCommand sqlDotaz = new SqlCommand(dotaz, spojeni))
{
    sqlDotaz.Parameters.AddWithValue("@anglicky", anglicky);
    int radku = sqlDotaz.ExecuteNonQuery();
    Console.WriteLine(radku);
}

C# kód sa vôbec nezmenil. SQL dotaz začína DELETE FROM a pokračuje názvom tabuľky. Nasleduje podmienka WHERE, ktorú už dobre poznáme. Nikdy na podmienku v príkaze DELETE nezabudnite, inak dôjde k vymazaniu všetkých záznamov v tabuľke! Aplikáciu opäť vyskúšajme:

Vymazanie záznamu z databázy v C# ADO .NET - Databázy v C # - ADO.NET

Skontrolujte si, že klávesnica medzi slovíčkami už naozaj nie je. Môžeme skúsiť aj zadať neexistujúce slovíčko k vymazaniu, počet ovplyvnených riadkov bude 0.

Vymazanie záznamu z databázy v C# ADO .NET - Databázy v C # - ADO.NET

Update

Naši štvoricu otázok zakončíme príkazom UPDATE, ktorý vyvolá zmenu. Naučme aplikácii meniť český preklad nejakého anglického slova:

Console.WriteLine("Zadej anglické slovíčko, u kterého chceš upravit překlad");
string anglicky = Console.ReadLine();
Console.WriteLine("Zadej nový překlad");
string cesky = Console.ReadLine();
string dotaz = "UPDATE Word SET Czech=@cesky WHERE English=@anglicky";
using (SqlCommand sqlDotaz = new SqlCommand(dotaz, spojeni))
{
    sqlDotaz.Parameters.AddWithValue("@anglicky", anglicky);
    sqlDotaz.Parameters.AddWithValue("@cesky", cesky);
    int radku = sqlDotaz.ExecuteNonQuery();
    Console.WriteLine(radku);
}

C# kód je opäť nezmenený (iba sme pridali parameter). SQL dotaz začína UPDATE, nasleduje názov tabuľky a ďalej klauzula SET. Po nej názov stĺpca, znamienko rovnosti a nová hodnota. Ak by sme potrebovali updatovať viac stĺpcov, zapíšeme to napr. Takto:

UPDATE Word SET Czech=@cesky, English=@anglicky WHERE Id=@id

Rovnako ako u DELETE nikdy nesmieme zabudnúť na klauzulu WHERE, inak sa updatuje všetky riadky v tabuľke.

Aplikáciu opäť vyskúšajme:

Update databázy v C# ADO.NET - Databázy v C # - ADO.NET

Skontrolujte si, že sa preklad zmenil.

Hranaté zátvorky

Ešte sme nespomenuli použitie hranatých zátvoriek v dotazoch. Ak názov nejakého stĺpca koliduje s kľúčovým slovom z SQL (napr. Sa stĺpec volá Where), dáme ho do hranatých zátvoriek. Často sa Seta s konvencií, kde sa takto označujú všetky názvy:

UPDATE [Word] SET [Czech]=@cesky, [English]=@anglicky WHERE [Id]=@id

Záver

Výhodou pripojeného prístupu k databáze je aktuálnosť spracovávaných dát aj vo viacužívateľských aplikáciách. Nevýhodou naopak môže byť časté pripájanie k vzdialenej databáze, väčší objem prenesených dát aj sekvenčné čítanie komponenty *DataReader, teda napríklad bez možnosti prechodu na predchádzajúci záznam.

To je pre tento článok všetko, v ďalšom sa zoznámite s vkladaním, editovaním a odstraňovaním dát v pripojených databázových aplikáciách. Dnešný projekt je so zdrojovými kódmi ako vždy v prílohe. V budúcej lekcii, Databázy v C # .NET - DataSet a SqlDataAdapter , si uvedieme odpojený prístup k databáze.


 

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é 603x (1.02 MB)
Aplikácia je vrátane zdrojových kódov v jazyku C#

 

Predchádzajúci článok
Kvíz - Databáza, prístupy, pripojená aplikácia v C#- ADO.NET
Všetky články v sekcii
Databázy v C # - ADO.NET
Preskočiť článok
(neodporúčame)
Databázy v C # .NET - DataSet a SqlDataAdapter
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
1 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity