Semináˇr Java X JDBC Semináˇr Java X p.1/25

Podobné dokumenty
Typ 2 - připojení prostřednictvím kódu nativního klienta pro přístup k síti

O Apache Derby detailněji. Hynek Mlnařík

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Datová vrstva informačního systému. Miroslav Beneš

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Tvorba informačních systémů

Datová vrstva informačního systému. Java Database Connectivity JDBC. Obsah přednášky JDBC. Datová vrstva informačního systému

4. lekce Přístup k databázi z vyššího programovacího jazyka

TÉMATICKÝ OKRUH TZD, DIS a TIS

Použití databází na Webu

8.2 Používání a tvorba databází

Optimalizace dotazů a databázové transakce v Oracle

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

KMI / TMA Tvorba mobilních aplikací. 6. seminář ZS 2016/2017 Středa 13:15-15:45

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

FIREBIRD relační databázový systém. Tomáš Svoboda

Text úlohy. Systémový katalog (DICTIONARY):

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

Popis logování v aplikačním serveru

Programování v jazyku C# II. 5.kapitola

Jazyk C# - přístup k datům

Databázové systémy úvod

Univerzita Palackého v Olomouci Radek Janoštík (Univerzita Palackého v Olomouci) Základy programování 4 - C# 10.4.

Instalace. Produkt je odzkoušen pro MS SQL server 2008 a Windows XP a Windows 7. Pro jiné verze SQL server a Windows nebyl testován.

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Tvorba informačních systémů

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Tvorba informačních systémů

Programování v Pythonu

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Embedded SQL v C/C++ úvod. Administrace Oracle Kateřina Opočenská

Úvod do Javy, JDBC a multimediální databáze

Jazyk SQL databáze SQLite. připravil ing. petr polách

Úvod do Javy, JDBC a multimediální databáze

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Databáze v Java aplikacích, JPA Handout

Úvod do databázových systémů

Java Database Connectivity with JDBC

Maturitní témata z předmětu PROGRAMOVÉ VYBAVENÍ pro šk. rok 2012/2013

C Přístup k databázím z WWW

Databáze pro evidenci výrobků

Transakce a zamykání. Administrace MS SQL Serveru (NDBI039) Pavel Hryzlík

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Databáze SQL SELECT. David Hoksza

Databáze II. 1. přednáška. Helena Palovská

Oracle XML DB. Tomáš Nykodým

Úvod do databázových systémů

Databázové systémy a SQL

Databázové systémy Cvičení 5.2

Java a Caché IV: Manipulace s objekty

Databázové a informační systémy

SQL v14. 4D Developer konference. 4D Developer conference 2015 Prague, CZ Celebrating 30 years

DUM 12 téma: Příkazy pro tvorbu databáze

Michal Krátký, Miroslav Beneš

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

13. blok Práce s XML dokumenty v databázi Oracle

Fyzické uložení dat a indexy

1 Administrace systému Moduly Skupiny atributů Atributy Hodnoty atributů... 4

Univerzita Pardubice

Jalapeño: pekelně ostrá Java persistence v Caché. Daniel Kutáč Senior Sales Engineer

Databázové systémy. Cvičení 6: SQL

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Využití XML v DB aplikacích

Stěhování aplikací. Michal Tomek, Sales Manager

4IT218 Databáze. 4IT218 Databáze

Jazyk SQL 3 - DML, DDL, TCL, DCL

MySQLi (objektově) Příklad vytvoření instance třídy včetně parametrů pro připojení: $mysqli = new mysqli('localhost', 'login', 'heslo', 'databaze');

Michal Krátký, Miroslav Beneš

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Virtuální privátní databáze

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

Instalace a konfigurace

Verzování a publikace dat na webu za pomoci PostgreSQL

UNIVERZITA PARDUBICE Fakulta elektrotechniky a informatiky. Databázová aplikace pro evidenci mechatronických stavebnic Michal Grof

Semestrální práce z DAS2 a WWW

Střední odborná škola a Střední odborné učiliště, Hořovice

5. POČÍTAČOVÉ CVIČENÍ

Informační systémy ve zdravotnictví. 6. cvičení

Databáze I. Přednáška 4

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Databáze I. Přednáška 6

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Zabezpečení proti SQL injection

Vytváření uživatelských datových typů a funkcí v Javě

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

KIV/ZIS cvičení 6. Tomáš Potužák

Administrace Oracle Práva a role, audit. Kukhar Maria

Tvorba informačních systémů

Zabezpečení proti SQL injection

Sada 1 - PHP. 14. Úvod do jazyka SQL

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

Transakce a zamykání Jiří Tomeš

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Databázové systémy. Tomáš Skopal. * embedded SQL * externí aplikace. - Databázové aplikace

Transkript:

Seminář Java X JDBC Seminář Java X p.1/25

Úvod JDBC API poskytuje základní rozhraní pro unifikovaný přístup k databázím Programátor je odstíněn od specifického API databáze Jednotné rozhraní JDBC pro všechny DB JDBC není určeno pouze pro přístup k relačním databázím k libovolnému formátu dat ve sloupcové podobě" Inspirováno ODBC standardem Seminář Java X p.2/25

Architektura JDBC Seminář Java X p.3/25

JDBC ovladače Typ 1 - lokální ODBC, instalace, součást JDK Typ 2 - JDBC-nativní ovladač, instalace Typ 3 - Čistá Java, sít ová komunikace, centrální server Typ 4 - Čistá Java, žádná instalace, optimalizace výrobcem DB Seminář Java X p.4/25

Použití JDBC 1. Nahrát ovladač 2. Definovat URL pro připojení 3. Navázat spojení 4. Vytvoření objektu třídy Statement 5. Dotaz 6. Zpracování výsledku 7. Zavření spojení Seminář Java X p.5/25

Použití JDBC - Nahrání ovladače Specifická třída (obvykle dodána výrobcem DB) Ovladač je nutné nahrát DriverManager classpath try { Class.forName("oracle.jdbc.driver.OracleDriver"); Class.forName("org.qjt.mm.mysql.Driver"); } catch(classnotfoundexception e) { System.err.println("Nelze nahrat DB driver : " +e.getmessage()); } Seminář Java X p.6/25

Použití JDBC 1. Nahrát ovladač 2. Definovat URL pro připojení 3. Navázat spojení 4. Vytvoření objektu třídy Statement 5. Dotaz 6. Zpracování výsledku 7. Zavření spojení Seminář Java X p.7/25

Použití JDBC - Definice URL String Podle URL se vybere ovladač String host = "muj.server.cz"; String dbname = "ijatest"; int port = 1234; String oracleurl = "jdbc:oracle:thin:@"+ host+":"+port+":"+dbname; String mysqlurl = "jdbc:mysql://"+host+":"+ port+"/"+dbname; Seminář Java X p.8/25

Použití JDBC 1. Nahrát ovladač 2. Definovat URL pro připojení 3. Navázat spojení 4. Vytvoření objektu třídy Statement 5. Dotaz 6. Zpracování výsledku 7. Zavření spojení Seminář Java X p.9/25

Použití JDBC - spojení DriverManager.getConnection(URL, uzivatel, heslo); Connection Náročná operace String user = "pepa"; String password = "heslo"; Connection connection = DriverManager.getConnection(URL, user, password); Získání informací o DB DatabaseMetaData md = connection.getmetadata(); getdatabaseproductname(), getdatabaseproductversion() Seminář Java X p.10/25

Použití JDBC 1. Nahrát ovladač 2. Definovat URL pro připojení 3. Navázat spojení 4. Vytvoření objektu třídy Statement 5. Dotaz 6. Zpracování výsledku 7. Zavření spojení Seminář Java X p.11/25

Použití JDBC - Statement, dotaz Posílání SQL dotazů DB (3 třídy) Statement jednoduché SQL PreparedStatement předkompilované SQL, parametry CallabeStatement volání uložených procedur na SQL serveru Mnoho metod (API) executequery() SQL dotazy, vrací data v ResultSet Prázdná ano, null nikdy executeupdate() Pro modifikaci tabulky Podpora DDL (CREATE, ALTER,... ) Seminář Java X p.12/25

Použití JDBC - Statement, dotaz II Statement statement = connection.createstatement(); Statement statement = connection.createstatement(); String sql = "SELECT * FROM mojetabulka"; ResultSet resultset = statement.executequery(sql); String sqlupdate = "DELETE FROM mojetabulka"; statement.executeupdate(sqlupdate); Seminář Java X p.13/25

Použití JDBC - Statement, užitečné metody execute uložené procedury getmaxrows/setmaxrows maximální počet řádek ve výsledku (0 neomezeno) getquerytimeout/setquerytimeout maximální čas po který bude driver čekat na výsledek Seminář Java X p.14/25

Použití JDBC 1. Nahrát ovladač 2. Definovat URL pro připojení 3. Navázat spojení 4. Vytvoření objektu třídy Statement 5. Dotaz 6. Zpracování výsledku 7. Zavření spojení Seminář Java X p.15/25

Použití JDBC - Výsledky ResultSet Obsahuje výsledek SQL dotazu tabulka s řádky a sloupci" První sloupec ma index 1! metoda next() pokus o přesun na další řádek getstring(int index), getstring(string nazev) while (resultset.next()) { String data1 = resutlset.getstring(1); String data2 = resutlset.getstring("jmeno"); } metody getxxx pro různé datové typy (int, double, float,... ) Seminář Java X p.16/25

Použití JDBC - Výsledky II metoda close() automatické uzavření pokud rodičovský Statement opět udělá dotaz metoda getmetadataobject vrátí ResultSetMetaData, informace o výsledku Počet sloupců výsledků Názvy sloupců Typy sloupců Seminář Java X p.17/25

Použití JDBC 1. Nahrát ovladač 2. Definovat URL pro připojení 3. Navázat spojení 4. Vytvoření objektu třídy Statement 5. Dotaz 6. Zpracování výsledku 7. Zavření spojení Seminář Java X p.18/25

Použití JDBC - Zavření spojení close(); connection.close(); Připojení je náročná operace pooling Seminář Java X p.19/25

JDBC - Pooling Pomocí poolingu" se citelně zvýší výkonnost aplikace Nezavírá se spojení s DB, uložení do bazénku" Několik otevřených připojení Využití web aplikace sklad připojení" Seminář Java X p.20/25

PreparedStatement Předkompilované dotazy Opakované použití SQL dotazu Přehledné použití parametrů složité SQL dotazy s parametry parametry dotazu se nastavují setxxx metody execute(), executequery(), executeupdate() clearparameters vymaže nastavené parametry Pozn. : Kontrola dat z www Seminář Java X p.21/25

PreparedStatement II PreparedStatement statement = connection.preparestatement( "UPDATE lidi SET plat=? WHERE id=?"); for (... pres vsechny lidi...) { Clovek clovek =... statement.setint(1, clovek.getplat()); statement.setint(2, clovek.getid()); statement.executeupdate(); } Seminář Java X p.22/25

Transakce Co to jsou transakce? Po každé operaci pomocí Statement automatické potvrzení změny dat Vypnutí automatického potvrzení connection.setautocommit(false); Nutně potvrzovat ručné connection.commit(); provedení rollback" connection.rollback(); Seminář Java X p.23/25

Transakce - příklad connection.setautocommit(false); try { statement.executeupdate(...); statement.executeupdate(...); } catch(sqlexception e) { try { connection.rollback(); } catch(sqlexception er) { System.err.println("Nemohu provest rollback"); } } finally { try { connection.commit(); connection.close(); } catch(sqlexception er) { System.err.println("Nemohu provest commit/close"); } } Seminář Java X p.24/25

Rekapitulace Připojení reprezentuje Connection Zvýšení výkonnosti pooling" připojení Zasílání dotazů, volání uložených procedur Statement Zvýšení výkonnosti předkompilované dotazy PreparedStatement Implicitně autocommit = true SQLException jsou spojené do hromady Seminář Java X p.25/25