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.

Slides:



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

Základy jazyka SQL Jan Tichava
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
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é.
Fakulta elektrotechniky a informatiky
Informační systémy Realizace uložených procedur a spouští, jejich praktické využití.
Práce se soubory. Ukládání dat Textové soubory s jednoduchou strukturou (např..txt a.csv) textové soubory s vnitřní hierarchií (např..xml) Soubory binárního.
„Programátor by měl být v prvé řadě líný.“. PIFovo Web API (API = Application Programming Interface)
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
Architektury a techniky DS Tvorba efektivních příkazů I Přednáška č. 3 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
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.
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.
Caché Security. Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra.
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
C# - Databáze úvod, ADO.NET
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Databázové systémy teorie a návrh relačních databázových systémů část II.
Vypracoval: Ondřej Dvorský Třída: VIII.A
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.
Principals, Securables, Schema Vít Ochozka. Entity databáze - zdroje Securables –Entity databáze (zdroje), ke kterým SQL reguluje přístup podle práv –Hierachie.
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Unifikovaná architektura databáze Katsiaryna Chernik.
Dílna Caché II. CSP pro pokročilé Tomáš Vaverka. Zdroje HTML Tag Reference v sekci Reference Material v dokumentaci Caché HTML Tag Reference v sekci Reference.
Novinky v SQL 2008 Piotr Grodzicki. Microsoft SQL Server Management Studio o Barevná indikace, volba databáze o Dedikované připojení pro administrátora.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Aplikační role Vít Ochozka. K čemu nám slouží Omezit přístup k databázi AKORD jen prostřednictvím konkrétní aplikace Jiné aplikace – MS excel, MS access,
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.
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í.
Databázové systémy I Cvičení č. 10 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
ADO – práce s databázemi
Databázové systémy I Cvičení č. 7 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Informatika II PAA DOTAZOVACÍ JAZYKY
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í.
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í
123.
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.
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í.
Delphi a databáze MS SQL Server.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B15 Autor Ing. Jiří Kalousek Období vytvoření březen.
Databázové systémy 2 Zkouška – 8:00. Příklad I - Funkce Vytvořte funkci ZK_DIFF_MIN_MAX (P_ZAM_ID NUMBER) RETURN VARCHAR2. Funkce může vracet.
SQL Další dotazy a pohledy Databázové systémy. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
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é aplikace v Delphi
23/04/20151 LINQ (1) LINQ (Language Integrated Query) je součást MS.NET Frameworku umožňující jednotný přístup k datům a jejich zpracování deklarativ-
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
YOUR LOGO C# ADO.NET. YOUR LOGO Úvod – ADO.NET  ADO.NET zajišťuje přístup k databázím  2 koncepčně jedinečné styly -Připojeně -Odpojeně přechodné (offline)
YOUR LOGO C# Entity Framework. YOUR LOGO  Entity framework nám poskytuje: -Vytváří objektový model na základě databázového schématu -Mapuje tabulky,
Databázové systémy přednáška 5 – Přístup na data
Roman Danel Institut ekonomiky a systémů řízení 2016
Technologie ADO.NET Technologie ADO.NET
Databázové systémy I Přednáška 11 Databázové systémy 1 – KIT/IDAS1
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
Počítačová cvičení z předmětu Datové sklady
Jak načítat externí data na SQL Server
Databázové systémy a SQL
Transkript prezentace:

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

YOUR LOGO ADO.NET a.NET Framework Microsoft.NET Framework Common Language Runtime Base Classes Web ServicesUser Interface Data and XML ADO.NET XML...

YOUR LOGO Základní pojmy a architektura  Základní jmenné prostory -System.Data – třídy reprezentující obecný přístup k datům, bez ohledu na konktrétní databázi ( DataSet, DataTable, Constraint ) -System.Data.(OleDb|Oracle|SqlClient|Odbc ) – třídy poskytovatelů dat (data providers) -System.Data.Common -System.Data.SqlTypes, System.Data.Sql – specifické třídy pro Microsft SQL Server

YOUR LOGO.NET Data Providers Hierarchie System.Data.OleDb.SqlClient OleDbCommand OleDbConnection OleDbDataReader OleDbDataAdapter SqlCommand SqlConnection SqlDataReader SqlDataAdapter

YOUR LOGO Třídy poskytovatelů dat  jsou vždy odvozeny od jedné základní třídy a implementují společné rozhraní podle toho, co mají dělat  každá třída má čtyři verze, jejichž jména začínají jménem příslušného poskytovatele dat  např. (Sql|OleDB|Oracle|ODBC)Connection implementují rozhraní IDbConnection a dědí od třídy DbConnection, umožňují se připojit k databázi

YOUR LOGO Třídy poskytovatelů

YOUR LOGO Database Connection  Connection  třídy representující spojení s databází  spojení je representována řetězcem (connection string), který se předá konstruktoru nebo nastaví ve vlastnosti ConnectionString  příklad řetězce : “server = (local); integrated security = SSPI; database=Northwind” SqlConnection conn= new SqlConnection( "server=localhost;database=mojeDatabaz e;uid=sa;pwd=");

YOUR LOGO Database Connection  vlastní spojení se otevře metodou Open  spojení je potřeba nakonec zavřít metodou Close, ideální je následující schéma použití : try { using (SqlConnection c = newSqlConnection(s)) { c.Open(); … ; c.Close() } } catch (SqlException) {…}

YOUR LOGO RECORD SET  Record set v ADO.NET neexistuje, existoval v ADO  Nahradili ho: -DataReader -DataAdapter -DataSet

YOUR LOGO DataReader  Umožňuje použití souboru záznamů, které jsou výsledkem SQL dotazu.  Chová se stejně jako forward-only server-side kursor v klasickém ADO

YOUR LOGO Príklad Con.Open(); OleDBCommand = new OleDBCommand(“SELECT * FROM Studenti, con”) OleDBDataReader dtr = cmd.ExecuteReader(); While dtr.Read() { listBox.Items.Add(dtr(“meno”)) } … Con.Close();

YOUR LOGO DataSet a DataAdapter  DataSet a DataAdapter, umožňují přenesení dat do lokální cache klienta (tím může být widowsový nebo i webový formulář) a práci s těmito daty i ve stavu, kdy je přerušeno spojení s databází.

YOUR LOGO DataSet  DataSet je výsledkem úsilí spojit klasické ADO s XML datovým formátem  DataSet je třída, která se nestará o spojení s databází nebo o SQL dotazy.  Jedná se o klientský nástroj pro zpracování dat.

YOUR LOGO

Schema objektu dataTable

YOUR LOGO Naplnenie DataSetu  Dva spôsoby: -Použití objektu DataAdapter, který vrací výsledek SQL dotazu ve formě XML. -Pracovat přímo s XML. DataSet má metody s jejichž pomocí umí číst a zapisovat XML data a schémata.

YOUR LOGO IDataAdapter

YOUR LOGO DataAdapter  adaptér je třída představující spojení do databáze a čtyři příkazy -SelectCommand – slouží k vybrání řádků z databáze -UpdateCommand – ukládání změn v řádcích -InsertCommand – ukládání nových řádků -DeleteCommand – mazání řádků  má metody - Fill, která použije SelectCommand k naplnění daty tabulky v DataSet u -Update, která zavolá příslušné příkazy na řádcích, aby se změny projevily v databázi

YOUR LOGO DataAdapter  příkazy je možno nastavit ručně nebo pomocí třídy providera CommandBuilder  CommandBuilder nastaví ostatní příkazy pomocí již nastaveného SelectCommand u  SelectCommand musí vracet alespoň jeden primární klíč nebo alespoň sloupec s UniqueConstraint  pokud změníte nějaký parametr SelectCommand u musíte metodou RefreshSchema přegenerovat CommandBuilder  metody GetUpdateCommand ap. – vrátí příslušný příkaz

YOUR LOGO Naplenenie cez DataAdapter OleDbConnection con = new OleDbConnection(conStr); OleDbCommand cmd = new OleDbCommand(“SELECT * FROM Studenti”,con); OleDbDataAdapter da = new OleDbDataAdapter(); Da.SelectCommand = cmd; DataSet ds = new DataSet(); da.Fill(ds,”Studenti”);

YOUR LOGO Iná možnosť da.Fill() SqlDataAdapter adapter = new SqlDataAdapter( "select * from zamestnanci", "server=localhost;database=mojeDatabaze;uid=sa;pwd="); DataSet ds = new DataSet(); adapter.Fill(ds,"zamestnanci");

YOUR LOGO Update SqlDataAdapter adapter = new SqlDataAdapter("select * from zamestnanci", "server=localhost;database=mojeDatabaze;uid=sa;pwd="); DataSet ds = new DataSet(); adapter.Fill(ds,"zamestnanci"); SqlCommandBuilder stavitel = new SqlCommandBuilder(adapter); //Vložen í nov é ho ř á dku DataTable tabulka = ds.Tables["zamestnanci"]; DataRow novy_radek = tabulka.NewRow(); novy_radek["jmeno"] = "Jan Okoun"; novy_radek["pozice"] = "sef"; novy_radek["adresa"] = "Nekde 12"; novy_radek["telefon"] = "555685"; novy_radek["plat"] = "45000"; tabulka.Rows.Add(novy_radek); //Postoupen í změněných ř á dek zp á tky do datab á ze adapter.Update(ds);

YOUR LOGO Príklad použitia DataView SqlDataAdapter adapter = new SqlDataAdapter( "select * from zamestnanci", "server=localhost;database=mojeDatabaze;uid=sa;pwd="); DataSetds= new DataSet(); adapter.Fill(ds,"zamestnanci"); DataView pohled = new DataView(ds.Tables["zamestnanci"]); pohled.Sort = "jmeno"; pohled.RowFilter = "plat > 20000"; DataGrid.DataSource = pohled; DataGrid.DataBind(); //podla zmeny pohled.RowStateFilter = DataViewRowState.Deleted;

YOUR LOGO Sql query  Sql príkaz: -SELECT * FROM uzivatele WHERE jmeno=’Maurenc’

YOUR LOGO Chybná autentifikace – SQL poison bool OveritUzivatele(string login,string heslo) { SqlConnection prip = new SqlConnection ("server=localhost;database=mojeDatabaze;uid=sa;pwd="); try { prip.Open(); SqlCommand prikaz = new SqlCommand ("SELECT count(*) FROM uzivatele WHERE login='"+login+"'"+ "AND heslo='"+heslo+"'",prip); int pocet = (int)prikaz.ExecuteScalar(); return (pocet > 0); } catch(SqlException) { return false; } finally { prip.Close(); } }

YOUR LOGO Možnosti SQl poisoning  SELECT count(*) FROM uzivatele WHERE login='Admin' AND heslo='cokoliv' OR 1=1;--‚  Login: cokoliv Heslo: x'; INSERT INTO uzivatele VALUES('Hacker','heslo');--  Login: cokoliv Heslo: x'; DROP TABLE uzivatele;--  Login: cokoliv Heslo: x'; SHUTDOWN WITH NOWAIT;--

YOUR LOGO Parametrizované príkazy  Existujú spôsoby parsovania ako by bolo možné SQL injection predísť  Odporučané je ale používať parametrizované príkazy

YOUR LOGO bool OveritUzivatele(string login,string heslo) { SqlConnection prip = new SqlConnection ("server=localhost;database=mojeDatabaze;uid=sa;pwd="); try { prip.Open(); SqlCommand prikaz = new SqlCommand ("SELECT count(*) FROM uzivatele WHERE AND"+ = login; = heslo; int pocet = (int)prikaz.ExecuteScalar(); return (pocet > 0); } catch(SqlException) { return false; } finally { prip.Close(); } }

YOUR LOGO bool OveritUzivatele(string login,string heslo) { OleDbConnection prip = new OleDbConnection ("provider=sqloledb;server=localhost;database="+ "mojeDatabaze;uid=sa;pwd="); try { prip.Open(); OleDbCommand prikaz = new OleDbCommand ("SELECT count(*) FROM uzivatele WHERE login=? AND"+ "heslo=?",prip); = login; = heslo; int pocet = (int)prikaz.ExecuteScalar(); return (pocet > 0); } catch(OleDbException) { return false; } finally { prip.Close(); } }

YOUR LOGO Uložené procedúry CREATE PROCEDURE varchar(30 varchar(30 int OUTPUT AS = count(*) FROM uzivatele WHERE AND GO

YOUR LOGO bool OveritUzivatele(string login,string heslo) { SqlConnection prip = newSqlConnection ("server=localhost;database=mojeDatabaze;uid=sa;pwd="); try { prip.Open(); SqlCommand prikaz = new SqlCommand("proc_OveritUzivatele",prip); prikaz.CommandType = CommandType.StoredProcedure; SqlParameter pocet = prikaz.Parameters.Add pocet.Direction = ParameterDirection.Output; prikaz.ExecuteScalar(); return ((int)pocet.Value > 0); } catch(SqlException) { return false; } finally { prip.Close(); } }