Vložit, aktualizovat, odstranit: Připojení k databázi ASP.NET
⚡ Chytré shrnutí
ASP.NET se připojuje k databázím, jako je SQL Server a Oracle prostřednictvím ADO.NET s použitím tříd SqlConnection, SqlCommand, SqlDataReader a SqlDataAdapter k otevření připojení a spuštění operací výběru, vkládání, aktualizace a odstranění uložených záznamů.
Přístup k datům z databáze je důležitým aspektem každého programovacího jazyka. Je nezbytné, aby jakýkoli programovací jazyk uměj pracovat s databázemi.
ASP.NET dokáže pracovat s různými typy databází. Může pracovat s nejběžnějšími databázemi, jako například Oracle a Microsoft SQL Server.
Disponuje také schopností pracovat s novými formami databází jako např MongoDB a MySQL.
Základy databázové konektivity
ASP.NET dokáže pracovat s většinou databází, nejběžnějšími jsou Oracle a Microsoft SQL Server. Ale u každé databáze je logika práce se všemi většinou stejná.
V našich příkladech se podíváme na práci s Microsoft SQL Server jako naše databáze. Pro účely učení si lze stáhnout a používat Microsoft SQL Server Express Edition. Toto je bezplatný databázový software poskytovaný společností Microsoft.
Při práci s databázemi jsou následující koncepty společné pro všechny databáze:
- Přípojka – Pro práci s daty v databázi je prvním zřejmým krokem připojení. Připojení k databázi se obvykle skládá z níže uvedených parametrů.
- Název databáze nebo zdroj dat – Prvním důležitým parametrem je název databáze. Každé připojení může pracovat vždy pouze s jednou databází.
- pověřovací listiny – Dalším důležitým aspektem je uživatelské jméno a heslo. Ty se používají k navázání připojení k databázi.
- Volitelné parametry – Můžete zadat volitelné parametry, jak má .NET zpracovávat připojení k databázi. Například lze zadat parametr, jak dlouho má připojení zůstat aktivní.
- Výběr dat z databáze – Jakmile je připojení navázáno, data se načtou z databáze. ASP.NET má schopnost spustit příkaz SQL select pro databázi. Příkaz SQL lze použít k načtení dat z konkrétní tabulky v databázi.
- Vkládání dat do databáze – ASP.NET se používá k vkládání záznamů do databáze. Hodnoty pro každý řádek, které je třeba vložit do databáze, jsou specifikovány v ASP.NET.
- Aktualizace dat do databáze – ASP.NET lze také použít k aktualizaci stávajících záznamů v databázi. V ASP.NET lze zadat nové hodnoty pro každý řádek, který je třeba v databázi aktualizovat.
- Mazání dat z databáze – ASP.NET lze také použít k odstranění záznamů z databáze. Kód je napsán tak, aby odstranil konkrétní řádek z databáze.
Nyní, když jsme si prošli teoretickou částí každé operace, podívejme se, jak provádět databázové operace v ASP.NET.
Databázová připojení ASP.NET
Podívejme se nyní na kód, který je třeba mít na paměti pro vytvoření připojení k databázi. V našem příkladu se připojíme k databázi s názvem Demodb. Přihlašovací údaje použité pro připojení k databázi jsou uvedeny níže:
- Uživatelské jméno – sa
- Heslo – demo123
Pojďme pracovat s naší aktuální webovou aplikací vytvořenou v předchozích částech.
- Začněte do něj přidávat databázové operace.
- Náš příklad se zabývá navázáním jednoduchého připojení. Toto připojení se naváže k databázi Demodb. Provede se to při prvním spuštění stránky.
- Po navázání spojení bude uživateli odeslána zpráva. Zpráva bude indikovat, že připojení bylo navázáno.
Pojďme se k dosažení tohoto cíle řídit níže uvedenými kroky.
Krok 1) Nejprve se ujistěte, že máte otevřenou webovou aplikaci (DemoApplication) ve Visual Studiu. Double-klikněte na soubor demo.aspx.cs a zadejte kód pro připojení k databázi.
Krok 2) Přidejte níže uvedený kód, který bude použit k navázání připojení k databázi.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string connectionString; SqlConnection cnn; connectionString = @"Data Source=WIN-50GP30FGO75;Initial Catalog=Demodb;User ID=sa;Password=demo123"; cnn = new SqlConnection(connectionString); cnn.Open(); Response.Write("Connection Made"); cnn.Close(); } } }
Code Vysvětlení:-
- Prvním krokem je vytvoření proměnných. Ty budou použity k vytvoření připojovacího řetězce a připojení k databázi SQL Serveru.
- Dalším krokem je samotné vytvoření připojovacího řetězce. Připojovací řetězec se skládá z následujících částí:
- Zdroj dat – Toto je název serveru, na kterém se databáze nachází. V našem případě se nachází na počítači s názvem WIN-50GP30FGO75.
- Počáteční katalog se používá k určení názvu databáze.
- Uživatelské jméno a heslo jsou přihlašovací údaje potřebné pro připojení k databázi.
- Dále přiřadíme připojovací řetězec proměnné cnn.
- Proměnná cnn je typu SqlConnection. Slouží k navázání spojení s databází.
- SqlConnection je třída v ASP.NET, která se používá k vytvoření připojení k databázi.
- Abyste mohli tuto třídu použít, musíte nejprve vytvořit objekt této třídy. Proto zde vytvoříme proměnnou s názvem cnn typu SqlConnection.
- Dále použijeme metodu Open proměnné cnn k otevření připojení k databázi. Uživateli zobrazíme zprávu, že připojení je navázáno. To se provede pomocí metody Response.Write. Poté připojení k databázi ukončíme.
Když je výše uvedený kód nastaven a projekt je spuštěn pomocí Visual Studio, získáte níže uvedený výstup. Jakmile se formulář zobrazí, klikněte na tlačítko Připojit.
Výstup:-
Výstupní zpráva zobrazená v prohlížeči ukáže, že bylo vytvořeno připojení k databázi.
ASP.NET Čtení databáze pomocí SqlDataReader
Pro zobrazení dat přístupných pomocí ASP.NET předpokládejme v naší databázi následující artefakty.
- Tabulka s názvem demotb. Tato tabulka bude sloužit k uložení ID a názvů různých tutoriálů.
- Tabulka bude mít dva sloupce, jeden s názvem TutorialID a druhý s názvem TutorialName.
- V tuto chvíli bude mít tabulka dva řádky, jak je uvedeno níže.
| TutorialID | Název kurzu |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Upravme kód tak, abychom mohli tato data dotazovat a zobrazovat informace na samotné webové stránce. Všimněte si, že zadaný kód navazuje na kód napsaný pro modul datového připojení.
Krok 1) Rozdělme kód na dvě části:
- První částí bude sestavení našeho příkazu SELECT. Ten bude použit k načtení dat z databáze.
- Poté provedeme příkaz select v databázi. Tím se odpovídajícím způsobem načtou všechny řádky tabulky.
Code Vysvětlení:-
- Prvním krokem je vytvoření následujících proměnných:
- SqlCommand – SqlCommand je třída definovaná v jazyce C#. Tato třída se používá k provádění operací čtení a zápisu do databáze.
- Objekt DataReader se používá k získání všech dat specifikovaných SQL dotazem. Všechny řádky tabulky pak můžeme číst jeden po druhém pomocí čtečky dat.
- Pak definujeme dvě řetězcové proměnné. Jedna je SQL pro uchování našeho SQL příkazového řetězce. Další je Output, která bude obsahovat všechny hodnoty tabulky.
- Dalším krokem je samotná definice SQL příkazu. V našem případě je to „Select TutorialID, TutorialName from demotb“. Tím se načtou všechny řádky z tabulky demotb.
- Dále vytvoříme objekt příkazu, který se používá k provedení příkazu SQL proti databázi. V příkazu SQL musíte předat objekt připojení a řetězec SQL.
- Dále spustíme příkaz pro čtení dat, který načte všechny řádky z tabulky demotb.
- Nyní, když máme všechny řádky tabulky, potřebujeme mechanismus pro přístup k řádkům jeden po druhém.
- K tomu používáme příkaz while pro postupný přístup k řádkům z datové čtečky.
- Pak použijeme metodu GetValue k získání hodnoty TutorialID a TutorialName.
Krok 2) V posledním kroku zobrazíme výstup uživateli. Poté zavřeme všechny objekty související s operací s databází.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Code Vysvětlení:-
- V našem kódu pokračujeme zobrazením hodnoty proměnné Output. To se provádí pomocí metody Response.Write.
- Nakonec zavřeme všechny objekty související s naší databázovou operací. Nezapomeňte, že je to vždy dobrý postup.
Po nastavení výše uvedeného kódu a spuštění projektu pomocí Visual Studia získáte níže uvedený výstup.
Výstup:-
Z výstupu je jasně vidět, že program dokázal získat hodnoty z databáze. Data se následně zobrazí v prohlížeči uživateli.
Vložte záznam databáze pomocí InsertCommand
Stejně jako při přístupu k datům, i ASP.NET umožňuje vkládat záznamy do databáze. Vezměme si stejnou strukturu tabulky, která se používá pro vkládání záznamů.
| TutorialID | Název kurzu |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
Upravme kód ve formuláři tak, abychom mohli do tabulky vložit následující řádek:
| TutorialID | Název kurzu |
|---|---|
| 3 | VB.Net |
Krok 1) Jako první krok přidejme do našeho programu následující kód. Následující úryvek kódu bude použit k vložení záznamu do naší databáze.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Insert into demotb(TutorialID,TutorialName) values(3,'VB.Net')"; command = new SqlCommand(sql, cnn); adapter.InsertCommand = new SqlCommand(sql, cnn); adapter.InsertCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code Vysvětlení:-
- Prvním krokem je vytvoření následujících proměnných:
- SqlCommand – Tento datový typ se používá k definování objektů, které provádějí SQL operace s databází. Tento objekt bude obsahovat SQL příkaz, který se spustí s naší databází SQL Serveru.
- Objekt DataAdapter se používá k provádění příkazů SQL pro vkládání, mazání a aktualizaci.
- Pak definujeme řetězcovou proměnnou s názvem SQL, která bude uchovávat náš řetězec SQL příkazů.
- Dalším krokem je samotná definice SQL příkazu. V našem případě vydáváme příkaz insert. Tím se vloží záznam TutorialID=3 a TutorialName=VB.Net.
- Dále vytvoříme objekt příkazu, který se používá k provedení příkazu SQL proti databázi. V příkazu SQL musíte předat objekt připojení a řetězec SQL.
- V našem příkazu datového adaptéru:
- Přiřaďte k adaptéru příkaz insert SQL.
- Pak spusťte metodu ExecuteNonQuery. Ta se používá k provedení příkazu insert v naší databázi.
- Metoda ExecuteNonQuery se používá v C# vydávat jakékoli DML prohlášení (operace vkládání, mazání a aktualizace) vůči databázi.
- Nakonec zavřeme všechny objekty související s naší databázovou operací. Nezapomeňte, že je to vždy dobrý postup.
Krok 2) Jako druhý krok přidáme stejný kód jako v sekci pro přístup k datům. Ten slouží k zobrazení nedávných dat tabulky v prohlížeči. Za tímto účelem přidáme níže uvedený kód do souboru demo.aspx.cs.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Po nastavení výše uvedeného kódu a spuštění projektu ve Visual Studiu získáte níže uvedený výstup.
Výstup:-
V okně prohlížeče uvidíte, že řádek byl úspěšně vložen do databáze.
Aktualizujte záznam databáze pomocí UpdateCommand
ASP.NET umožňuje aktualizovat existující záznamy v databázi. Vezměme si stejnou strukturu tabulky, která byla použita výše pro příklad vkládání záznamů.
| TutorialID | Název kurzu |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net |
Změňme kód v našem formuláři tak, abychom mohli aktualizovat následující řádek. Původní hodnota řádku je TutorialID jako 3 a TutorialName jako VB.Net, kterou aktualizujeme na „VB.Net Complete“, zatímco hodnota řádku pro TutorialID zůstane stejná.
Stará řada
| TutorialID | Název kurzu |
|---|---|
| 3 | VB.Net |
Nový řádek
| TutorialID | Název kurzu |
|---|---|
| 3 | VB.Net Complete |
Krok 1) Jako první krok přidáme do našeho programu následující kód. Následující úryvek kódu bude použit k aktualizaci existujícího záznamu v naší databázi.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Update demotb set TutorialName='VB.Net Complete' where TutorialID=3"; command = new SqlCommand(sql, cnn); adapter.InsertCommand = new SqlCommand(sql, cnn); adapter.InsertCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code Vysvětlení:-
- Prvním krokem je vytvoření následujících proměnných:
- SqlCommand – Tento datový typ se používá k definování objektů pro provádění SQL operací s databází. Tento objekt bude obsahovat SQL příkaz, který se spustí s naší databází SQL Serveru.
- Objekt DataAdapter se používá k provádění příkazů SQL pro vkládání, mazání a aktualizaci.
- Pak definujeme řetězcovou proměnnou s názvem SQL, která bude uchovávat náš řetězec SQL příkazů.
- Dalším krokem je definování SQL příkazu. V našem případě vydáváme příkaz aktualizace. Tím se aktualizuje TutorialName na „VB.Net Complete“. TutorialID zůstane nezměněn a hodnota bude 3.
- Dále vytvoříme objekt příkazu. Ten se používá k provedení SQL příkazu v databázi. V SQL příkazu předáme objekt připojení a SQL řetězec.
- V našem příkazu pro datový adaptér přiřadíme SQL příkaz k našemu adaptéru. Poté vydáme metodu ExecuteNonQuery. Ta se používá k provedení příkazu update v naší databázi.
- Nakonec zavřeme všechny objekty související s naší databázovou operací. Nezapomeňte, že je to vždy dobrý postup.
Krok 2) Jako druhý krok přidáme stejný kód jako v sekci pro přístup k datům. Ten slouží k zobrazení nedávných dat tabulky v prohlížeči. Za tímto účelem přidáme níže uvedený kód.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Po nastavení výše uvedeného kódu a spuštění projektu pomocí Visual Studia získáte níže uvedený výstup.
Výstup:-
V okně prohlížeče uvidíte, že řádek byl v databázi úspěšně aktualizován.
Vymažte záznam databáze pomocí příkazu DeleteCommand
ASP.NET může odstranit existující záznamy z databáze. Vezměme si stejnou strukturu tabulky, která byla použita výše v příkladu pro odstranění záznamů.
| TutorialID | Název kurzu |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net Complete |
Změňme kód ve formuláři tak, abychom mohli smazat následující řádek:
| TutorialID | Název kurzu |
|---|---|
| 3 | VB.Net Complete |
Krok 1) Jako první krok přidejme do našeho programu následující kód. Následující úryvek kódu bude použit k odstranění existujícího záznamu v naší databázi.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataAdapter adapter = new SqlDataAdapter(); String sql = ""; sql = "Delete demotb where TutorialID=3"; command = new SqlCommand(sql, cnn); adapter.DeleteCommand = new SqlCommand(sql, cnn); adapter.DeleteCommand.ExecuteNonQuery(); command.Dispose(); cnn.Close(); } } }
Code Vysvětlení:-
- Klíčový rozdíl v tomto kódu spočívá v tom, že nyní vydáváme příkaz SQL delete. Příkaz delete se používá k odstranění řádku v tabulce demotb, ve kterém má TutorialID hodnotu 3.
- V našem příkazu pro datový adaptér přiřadíme SQL příkaz delete k našemu adaptéru. Také vydáme metodu ExecuteNonQuery, která se používá k provedení příkazu delete v naší databázi.
Krok 2) Jako druhý krok přidáme stejný kód jako v sekci pro přístup k datům. Ten slouží k zobrazení nedávných dat tabulky v prohlížeči. Za tímto účelem přidáme níže uvedený kód.
namespace DemoApplication { public partial class Demo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { SqlCommand command; SqlDataReader dataReader; String sql, Output = " "; sql = "Select TutorialID,TutorialName from demotb"; command = new SqlCommand(sql, cnn); dataReader = command.ExecuteReader(); while (dataReader.Read()) { Output = Output + dataReader.GetValue(0) + "-" + dataReader.GetValue(1) + "</br>"; } Response.Write(Output); dataReader.Close(); command.Dispose(); cnn.Close(); } } }
Po nastavení výše uvedeného kódu a spuštění projektu pomocí Visual Studia získáte níže uvedený výstup.
Výstup:-
Propojení ovládacích prvků ASP.NET s daty
Viděli jsme, jak můžeme pomocí příkazů ASP.NET, jako například SqlCommand a SqlDataReader, načíst data z databáze. Také jsme viděli, jak můžeme číst každý řádek tabulky a zobrazit ho na webové stránce.
Existují metody pro přímé propojení ovládacích prvků s různými poli v tabulce. V současné době lze s aplikací ASP.NET svázat pouze níže uvedené ovládací prvky:
- KontrolaBoxSeznam
- RadioButtonList
- Rozbalovací seznam
- SeznamBox
Podívejme se tedy na příklad, jak můžeme v ASP.NET použít vazbu ovládacích prvků. Vezměme si zde seznam.Box příklad. Řekněme, že máme v naší databázi následující data.
| TutorialID | Název kurzu |
|---|---|
| 1 | C# |
| 2 | ASP.Net |
| 3 | VB.Net Complete |
Použijme seznamBox ovládání a podívejme se, jak může automaticky načítat data z naší tabulky demotb. Postupujme podle níže uvedených kroků.
Krok 1) Vytvořte základní webový formulář. Z panelu nástrojů ve Visual Studiu přetáhněte 2 komponenty – popisky a seznam.BoxPak proveďte následující dílčí kroky:
- Jako textovou hodnotu prvního popisku zadejte TutorialID.
- Textovou hodnotu druhého popisku zadejte jako Název_tutoriálu.
Níže je uvedeno, jak bude formulář vypadat po provedení výše uvedených kroků.
Krok 2) Dalším krokem je začít propojovat jednotlivé seznamyBox do databázové tabulky.
- Nejprve klikněte na SeznamBox pro TutorialID. Tím se zobrazí další dialogové okno po straně ovládacího prvku.
- V dialogovém okně klikněte na možnost Vybrat zdroj dat.
Krok 3) Poté se zobrazí dialogové okno. Toto okno lze použít k vytvoření nového zdroje dat. Zdroj dat bude představovat připojení k databázi. Vyberte možnost Nový zdroj dat.
Krok 4) Po výběru nového zdroje dat v posledním kroku se zobrazí následující obrazovka. Zde je potřeba zmínit typ zdroje dat, který chceme vytvořit.
- Vyberte možnost databáze pro práci s databází SQL Server.
- Nyní musíme pojmenovat náš zdroj dat. Zde mu dáváme název DemoDataSource.
- Nakonec klikneme na tlačítko OK pro přechod na další obrazovku.
Krok 5) Nyní musíme vytvořit připojení k naší databázi. Na další obrazovce klikněte na tlačítko Nové připojení.
Krok 6) Dále musíte přidat přihlašovací údaje pro připojení k databázi.
- Vyberte název serveru, na kterém se nachází SQL Server.
- Zadejte uživatelské jméno a heslo pro připojení k databázi.
- Vyberte databázi jako demotb.
- Klepněte na tlačítko OK.
Krok 7) Na další obrazovce uvidíte tabulku demotb. Kliknutím na tlačítko Další potvrďte výchozí nastavení.
Krok 8) Nyní budete moci vyzkoušet připojení na další obrazovce.
- Klikněte na tlačítko Test dotazu a zjistěte, zda se vám podaří získat hodnoty z tabulky.
- Klepnutím na tlačítko Dokončit průvodce dokončete.
Krok 9) Nyní na poslední obrazovce můžete kliknout na tlačítko OK. Tím se propojí seznam TutorialID.Box k názvu pole TutorialID v tabulce demotb.
Krok 10) Nyní je čas navázat seznam TutorialName.Box do pole NázevTutoriálu.
- Nejprve klikněte na seznam TutorialNameBox.
- Dále vyberte v dialogovém okně, které se zobrazí na straně seznamu, možnost Zdroj dat.Box.
Krok 11) DemoDataSource již uvidíte při výběru zdroje dat na další obrazovce.
- Vyberte zdroj demodat.
- Klepněte na tlačítko OK.
Pokud jsou všechny výše uvedené kroky provedeny podle obrázku, získáte níže uvedený výstup.
Výstup:-
Z výstupu vidíte, že seznamBoxZobrazí TutorialID a TutorialName.




























