ADO.NET – Objekt Command (online scenář) Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.

Slides:



Advertisements
Podobné prezentace
Přístup k databázím z WWW
Advertisements

Základy jazyka SQL Jan Tichava
YOUR LOGO ADO.NET - Práca s databázou. YOUR LOGO ADO.NET  ADO.NET představuje soubor tříd pro přístup k datům v technologii.NET.
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
LOV, Listbox, Poplist a Combobox v Oracle Forms LOV – seznam hodnot, které se zobrazí po stisku klávesy Enter v textovém poli. LOV – seznam hodnot, které.
 Informací se data a vztahy mezi nimi stávají vhodnou interpretací pro uživatele, která odhaluje uspořádání, vztahy, tendence a trendy  Existuje celá.
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
PROGRAMOVACÍ JAZYKY (c) Tralvex Yeap. All Rights Reserved.
Temporální databáze a TSQL
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Radek Špinka Přepínače MSSQL výběr.
C# - struktury, výčtové typy, pole
C# - datové typy Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
C# - Registry Windows Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databáze Úvod.
C# - znakové typy a řetězce
C# - Databáze úvod, ADO.NET
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
C# - Exceptions (výjimky)
C# - pointery Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
C# - funkce a procedury Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Relační databáze.
C# - OOP (object oriented programming)
Vypracoval: Ondřej Dvorský Třída: VIII.A
C# - Grafika Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
C# - Úvod Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
MS ACCESS parametrický dotaz
C# - prvky UI – vlastnosti a události Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
C# - I/O, streamy, práce se soubory
Ing. Tomáš Váňa, Ing. Jiří Zechmeister
C# - Testování a ladění aplikací Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.8 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze – základy SQL Typ: DUM - kombinovaný.
Číslo šablony: III/2 VY_32_INOVACE_P4_3.6 Tematická oblast: Aplikační software pro práci s informacemi II. Databáze - formulář Typ: DUM - kombinovaný Předmět:
Databázové systémy II Přednáška V Ing. Tomáš Váňa, Ing. Jiří Zechmeister Fakulta elektrotechniky a informatiky
C# - Menus, ToolBars and Dialogs Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Transakční zpracování v SQL P. Částek. Transakce Transakce = logická jednotka práce Podaří-li se všechny části transakce, potvrdíme je. COMMIT Jestliže.
ADO.NET – Transakce Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B16 Autor Ing. Jiří Kalousek Období vytvoření březen.
C# - Generic Collections Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
ADO – práce s databázemi
ADO.NET – Objekt DataSet (offline scenář) Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Databázové systémy 2 Zkouška – 8:00. Příklad I – Procedura – 5 bodů Vytvořte proceduru P_ZK2(p_table_name VARCHAR2, p_min_nuls NUMBER, p_drop.
Dynamic SQL P. Částek. Dynamic SQL Embedded SQL je překládaný preprocesorem => za běhu nelze nechat uživatele rozhodovat o vzhledu samotných SQL příkazů.
Aplikační a programové vybavení
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Cvičení č. 5 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
KIV/ZIS cvičení 4 Tomáš Potužák. Dotazy - úvod Umožňují pracovat s databází –Získávat specifické informace z tabulky, případně z více tabulek najednou.
C# - konverze datových typů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
ADO.NET – object Connection Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Microsoft SQL server Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
NÁZEV ŠKOLY:SOŠ Net Office, spol. s r.o. Orlová Lutyně
Jaroslav Kudr pro OATGM
Typový příklad 3 – zadání 1
Databázové systémy a SQL
Šablona 32 VY_32_INOVACE_038.ICT.34
Databázové systémy a SQL
Přednáška 9 Triggery.
Transkript prezentace:

ADO.NET – Objekt Command (online scenář) Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

Objekt Command  Tento objekt se používá k vykonání jednoho dotazu na DB.  Tento dotaz může provést akce jako vytvoření, přidání, získání, smazání nebo update záznamů v DB.  Jednou z hlavních funkcí objektu Command je jeho schopnost spolupracovat s uloženými dotazy a procedurami včetně předávání parametrů těmto procedurám.  Existují různé druhy objektů Command v závislosti na providerovi DB připojení (OleDbCommand, OdbcCommand, SqlCommand, OracleCommand)  My budeme využívat objekt SqlCommand pro datové úložiště SQL server

SqlCommand properties: Properties & MethodsDescription CommandText Vykonává příkazy, které vrací řádky. ExecuteReader nemusí mít žádoucí efekt pro vykonávání příkazů jako například SQL SET. CommandType Stored procedure, TableDirect, Text Connection Nastavuje SqlConnection (get,set) pro tento instanci SqlCommand CommandTimeout Vrací nebo nastavuje časovou hodnotu, za kterou končí pokus o provedení příkazu a je vygenerována chyba Parameters Čtení SqlParametrCollection Transaction Čte nebo nastavuje SqlTransaction skrze kterou je SqlCommand vykonán

SqlCommand - metody vykonávající dotazy nad DB úložištěm: ItemDescription ExecuteReader Vykonává příkazy, které vrací řádky ve formě objektu DataReader. ExecuteReader nemusí mít žádoucí efekt pro vykonávání příkazů jako například SQL SET. ExecuteNonQuery Provede vykonání příkazů SQL INSERT, DELETE, UPDATE, a SET. ExecuteScalar Slouží k získání jediné hodnoty, například sumarizační hodnoty z DB.

Executing Single Value Returning Query  SELECT count(*) FROM tbProducts  Použití ExecuteScalar vrátí první hodnotu z prvního řádku vráceného resultsetu  Vrácená hodnota je typu System.Object a je nutná přetypovat  Volání: Cmd.ExecuteScalar();

Executing Row Returning Resultset  SELECT * FROM tbProducts  Použití ExecuteReader vrátí objekt DataReader  Vrácená objekt je read-only a forward only set  Volání: Cmd.ExecuteReader();  Jednoduché a rychlé

Objekt DataReader  Objekt DataReader se využívá k načtení výsledku dotazu, který vrací jeden nebo více záznamů z datového úložiště  Používá se v připojených aplikacích.  Objekt DataReader je standardně ukončován před ukončením objektu Connection např. takto: finally { if (lReader != null && !lReader.IsClosed) // kontrola jestli je objekt inicializován nebo na to zda objekt není zavřený { lReader.Close(); } if (lConnection != null && !lConnection.State.Equals(ConnectionState.Closed)) { lConnection.Close(); } }

DataReader: Properties & MethodsDescription Read Přesun na další řádek a návrat hodnoty TRUE/FALSE jestli existuje další řádek. NextResult Přesun na další výsledek (pokud Command spustil více SQL dotazů) isDBNull Indikuje zda pole obsahuje NULL GetOrdinal Vrací pořadové číslo sloupce (SELECTu) GetValue Vrací hodnotu pole jako System.object, nutné přetypovat na odpovídající typ sloupce Get Vrací hodnotu pole jako konkrétní datový typ HasRows Můžu určit jestli vykonaný dotaz vrací řádky IsClosed Vrací Boolean RecordsAffected Vrací hodnotu určující kolik záznamů bylo provedením query změněno, smazáno Close Metoda zavírá Reader

Úkol 1 Vytvořte aplikaci, která do RichTextBoxu vypíše všechny contactName z tabulky Customers z dané země, název země zadejte prostřednictvím textBoxu SQL dotaz: strSQL = "SELECT contactName FROM customers WHERE country = '" + txtCountry.Text + "';"; Řešení: FormApp_ExecuteReader_Demo_04

SQL injection  Co je může být problémem v předchozí aplikaci? (zaměřte se na zadávání parametru do textboxu) Podívejte se do DB na první záznam tabulky Customers například na hodnotu ContactName (Maria Anders ). Spusťte aplikaci, a do txtCountry zadejte následující řetězec (přesně tak jak je napsán): Germany ' ; UPDATE customers SET contactName = 'Karel' WHERE CustomerID = 'ALFKI

Proveďte výběr stisknutím tlačítka v aplikaci Zkontrolujte znovu první záznam tabulky Customers

 Tomu co jste právě ověřili se říká SQL injection  Může způsobit pád DB, získání údajů, které mají být utajeny, smazání cenných dat atd.. (SONY průnik do DB ??)  Obranou proti SQL injection je použití parametrů  Objekt Command obsahuje kolekci parametrů  SQL injection není pouze záležitostí SQL serveru a C# ale měli by jste si uvědomit jeho nebezpečí i v jiných aplikacích (PHP, MySQL, atd.)

Command - Parametry  Namísto vytvoření dotazu SQL skládáním řetězců (nebezpečí SQL inj.) je možné konkrétní hodnotu do SQL dotazu poslat formou parametru, ten je typově ošetřen a nemůže dojít k tomu, že by uživatel poslal do SQL dotazu ještě nějaký řetězec provádějící jinou činnost  Vytvoření nového parametru: New SqlClient.SqlParameter(“CategoryId“,SqlDbType.Int)  Použití ukazuje následující část kódu

Úkol 2  Aplikaci z úkolu jedna upravte tak, aby pracovala s ověřte, že původní nedostatek s vložením jiného SQL dotazu do textboxu byl odstraněn.  K řešení úkolu můžete použít kód z předchozí strany prezentace.

Executing NonQuery  Jde o dotazy jazyka SQL, které nevrací ResultSet:  DML (Data manipulation language): INSERT UPDATE DELETE  DDL (Data definition language): CREATE TABLE DROP TABLE  Příkaz: cmd.ExecuteNonQuery(); Tento příkaz vrací číslo – počet záznamů, jichž se provedení příkazu dotklo, pokud se příkaz nedotkl žádného záznamu DB, pak je návratová hodnota (-1), stejná hodnota je vrácena i při Rollbacku transakce.

Úkol 3  Vytvořte aplikaci podle obrázku, která provede UPDATE záznamů v tabulce v sloupci City, podle vyhledávacího kritéria. V seznamu měst vyberete to, které budete měnit a napíšete jeho nový název. Vypište, kolik záznamů bylo změněno. Použijte parametry pro složení SQL dotazu a volání a návratovou hodnotu metody ExecuteNonQuery. Řešení: Command_NonExecute_Query_Demo_06

Stored procedure Demo

Uložené procedury  Bezpečnost  Pokud se změní např. způsob třídění dat, nemusím měnit aplikaci, pouze uloženou proceduru  Může urychlit běh aplikace

Vytvořte na SQL serveru uloženou proceduru CreateProduct

 Vytvořte novou formulářovou aplikaci a nazvěte ji StoredProceduresDemo  Na formulář přidejte z ToolBoxu objekt sqlConnection a nazvěte ho cnnNorthwind Data Source=.\SQLEXPRESS;Initial Catalog = Northwind;Integrated Security=True;

 Vyberte cnnNorthwind a v properties zobrazte pomocný dialog Application Settings/Property Binding 1 2 3

 Přidejte z Toolboxu sqlCommand pokud tam není vyhledejte ho v seznamu přes Choose items a nazvěte ho cmdCreateProduct  Nastavte vlastnost Connection string na cnnNorthwind  Nastavte vlastnost Type na Stored procedure  Nastavte vlastnost CommandText na [dbo].[CreateProduct]  Nechte vytvořit parametry  Odstraňte parametr RETURN_VALUE  ProductName změňte na nvarchar

 Otestujte Command pomocí Preview Data v SQLCommand Tasks funkce na objektu cmdCreateProduct

 Na formulář přidejte objekty a pojmenujte je: Textboxy: txtProductName a txtUnitPrice CheckBox: chkDiscontinued Tlačítka: btnOk, btnCancel

 btnCancel – pouze zavře aplikaci this.Close()  btnOK – zadám objektu Command hodnoty parametrů z GUI a spustím příkaz :

 Po spuštění program vyhodí chybu, k jejímu odstranění upravte vlastnost parametru ProductId.Direction na Output

Konec  Řešení : Stored_Procedure_Demo_07

Co jsme neprobrali ?  Batch updates - dávkové zpracování (spuštění více SQL commands najednou) – my si ukážeme v následující prezentaci až práci s transakcemi  Asynchronní vykonání příkazů, spouštění příkazů v jiném vlákně než je běh hlavní aplikace (nutná znalost delegátů) – doporučení nastudovat všem, kteří chtějí seriózně pokračovat ve vývoji aplikací  MARS – Multiple Active Results Sets – nad jedním spojením normálně nemůže být více než jeden aktivní Datareader – technologie MARS to umožňuje

32 Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí Použité materiály: Kniha: Programujeme profesionálně, nakladatelství WROX, autor: Jay Glynn,… Seriály o programování v jazyce C# :