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

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

Tvorba informačních systémů

Tvorba informačních systémů

Tvorba informačních systémů

Michal Krátký, Miroslav Beneš

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

Použití databází na Webu

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

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

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

Michal Krátký, Miroslav Beneš

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

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);

TÉMATICKÝ OKRUH TZD, DIS a TIS

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

Tvorba informačních systémů

Databázové a informační systémy Jana Šarmanová

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

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

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

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Tvorba informačních systémů

Vytváření a použití knihoven tříd

Tvorba informačních systémů

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Databázové systémy úvod

Klíčová slova: dynamické internetové stránky, HTML, CSS, PHP, SQL, MySQL,

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

STARÁ DOBRÁ JAVA A PERSISTENCE S CACHÉ

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

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

Komponenty v.net. Obsah přednášky

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Databázové systémy, MS Access. Autor: Ing. Jan Nožička SOŠ a SOU Česká Lípa VY_32_INOVACE_1130_Databázové systémy, MS Access_PWP

Michal Krátký, Miroslav Beneš

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

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

Semestrální práce z DAS2 a WWW

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

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

RMI - Distribuované objekty v Javě

Databázové systémy trocha teorie

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

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

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

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

RMI Remote Method Invocation

Softwarové komponenty a Internet

1 Úvod. J. Zendulka: Databázové systémy - 1 Úvod 1

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

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

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

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

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

J. Zendulka: Databázové systémy - 1 Úvod Intuitivní vymezení pojmu databáze

Java a Caché IV: Manipulace s objekty

DUM 11 téma: Databázové jazyky a servery

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

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

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

Java Database Connectivity with JDBC

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

SYBASE ADAPTIVE SERVER JAVA V DATABÁZI

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

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

Bezpečnost a bezpečné programování

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

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

Databázové systémy a SQL

CSPUG 2011-květen. GridSQL a pg-pool II. Vratislav Beneš benes@optisolutions.cz

Bc. David Gešvindr MSP MCSA MCTS MCITP MCPD

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

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

InterSystems Caché Post-Relational Database

Databáze v Java aplikacích, JPA Handout

Přizpůsobení JSTL pro Google App Engine Datastore

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

Univerzita Pardubice

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

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Virtuální privátní databáze

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

nástroj pro jednoduchou správu a vedení agendy studentských počítačových sítí na kolejích SU OPF Karviná Ing.

KTE / ZPE Informační technologie

Server-side technologie pro webové aplikace

Architektura COM. Historie Component Object Model (COM) Komunikace s komponentami Rozhraní komponent COM komponenty v.net.

Tvorba informačních systémů

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

1. Webový server, instalace PHP a MySQL 13

Platforma Java. Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/PJA: Seminář V. 27. říjen, / 15

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen


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

Transkript:

Datová vrstva informačního systému Miroslav Beneš Obsah přednášky JDBC architektura ovladače použití ODBC architektura ovladače a zdroje dat použití PHP & MySQL Datová vrstva informačního systému 2 Java Database Connectivity JDBC JDBC rozhraní pro unifikovaný přístup k datům použití i mimo databáze data ve formě tabulek (CSV, XLS,...) ovladače jsou k dispozici pro většinu databázových systémů inspirováno rozhraním ODBC objektové rozhraní možnost spolupráce s ODBC Datová vrstva informačního systému 4 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 1

Architektura JDBC Aplikační kód JDBC API Ovladač JDBC DB API Databáze java.sql.* javax.sql.* Architektura JDBC ResultSet ResultSet ResultSet Statement PreparedStatement CallableStatement Aplikace Connection DriverManager Oracle driver JDBC-ODBC bridge Sybase driver ODBC driver Datová vrstva informačního systému 5 Datová vrstva informačního systému 6 JDBC ovladač zprostředkování komunikace aplikace s konkrétním typem databáze implementován obvykle výrobcem databáze dotazovací jazyk SQL předá se databázi ovladač vyhodnotí přímo reprezentován specifickou třídou sun.jdbc.odbc.jdbcodbcdriver com.mysql.jdbc.driver Typy JDBC ovladačů Typ 1: využívá ODBC (přes JDBC-ODBC bridge) obtížně konfigurovatelné Typ 2: komunikace s nativním ovladačem Typ 3: komunikuje s centrálním serverem (Network Server) síťovým protokolem pro rozsáhlé heterogenní systémy Typ 4: založen čistě na jazyce Java přímý přístup do databáze Datová vrstva informačního systému 7 Datová vrstva informačního systému 8 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 2

Registrace ovladače konkrétní ovladač je pevně spojen s aplikací new com.mysql.jdbc.driver() výběr ovladače za běhu aplikace String drivername = com.mysql.jdbc.driver ; try { Class.forName(driverName); catch( ClassNotFoundException e) { // obsluha výjimky Identifikace spojení jdbc:driver:database jdbc:odbc:datasource;attr=value; Příklad: jdbc:mysql://localhost/dais3?user=dais3 &password=dais3 &useunicode=true &characterencoding=iso-8859-2 Datová vrstva informačního systému 9 Datová vrstva informačního systému 10 Připojení k databázi Connection con = DriverManager.getConnection( url, uživatel, heslo ) 1. DriverManager se dotáže všech registrovaných ovladačů 2. Rozpozná-li ovladač své url, vrátí objekt Connection Objekt Statement Reprezentuje SQL příkaz: Statement PreparedStatement CallableStatement Vytvoření instance příkazu: Statement stmt = con.createstatement(); Provedení příkazu ResultSet rs = stmt.executequery( SELECT * FROM t ); int num = stmt.executeupdate( DELETE * FROM t ); Datová vrstva informačního systému 11 Datová vrstva informačního systému 12 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 3

Objekt ResultSet Reprezentuje výsledek dotazu SELECT Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery( SELECT * FROM uzivatel ); while( rs.next() ) { String login = rs.getstring( login ); String jmeno = rs.getstring( jmeno ); rs.close(); stmt.close(); Ošetření chyb public class SQLException extends Exception try { catch( SQLException e) { while( e!= null ) { System.out.println(e.getMessage()); System.out.println(e.getSQLState()); System.out.println(e.getErrorCode()); e = e.getnextexception(); Datová vrstva informačního systému 13 Datová vrstva informačního systému 14 Parametrizované příkazy Možnost předkompilace opakované provedení příkazu Parametry označené znakem? indexované od 1 INSERT INTO uzivatel(login,jmeno) VALUES(?,?) Parametrizované příkazy PreparedStatement pstmt = con.preparestatement( INSERT VALUES(?,?) ); pstmt.clearparameters(); pstmt.setstring(1, wal007 ); pstmt.setnull(2, Types.VARCHAR); Datová vrstva informačního systému 15 Datová vrstva informačního systému 16 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 4

Transakce try { con.setautocommit(false); stmt.executeupdate( ); con.commit(); catch( SQLException e ) { con.rollback(); Open Database Connectivity ODBC Datová vrstva informačního systému 17 ODBC Specifikace API pro databáze Nezávislé na databázi a jazyce Databázově závislé ovladače Správce ovladačů Driver Manager Založeno na specifikaci X/Open a ISO: SQL Call Level Interface (SQL/CLI) Architektura ODBC Aplikace ODBC API Správce ovladačů ODBC API (SPI) Ovladač Ovladač Ovladač Zdroj dat Zdroj dat Zdroj dat Datová vrstva informačního systému 19 Datová vrstva informačního systému 20 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 5

Typy ovladačů Ovladače založené na souborech přímý přístup k datům (ovladač = zdroj dat) analýza a interpretace dotazů dbase Ovladače založené na SŘBD dotazy se předávají ke zpracování SŘBD transformace ODBC SQL na konkrétní dialekt SQL Typy zdrojů dat Systémové datové zdroje informace jsou uloženy přímo v systému (registry) identifikovány jménem zdroje Souborové datové zdroje informace jsou uloženy v samostatném souboru (*.dsn) možnost sdílení, přenosu na jiné počítače identifikovány jménem souboru Datová vrstva informačního systému 21 Datová vrstva informačního systému 22 Příklad systémového zdroje [HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\Dais3] "Driver"="C:\\WINDOWS\\System32\\myodbc.dll" "Description"="Data Source for DAIS3" "Database"="dais3" "Server"="localhost" "User"="dais3" "Password"="dais3" "Port"="" "Option"="0" "Stmt"="" Postup 1. Připojení k datovému zdroji 2. Inicializace 3. Vytvoření a provedení dotazu 4. Získání výsledku 5. Ukončení transakce 6. Odpojení od datového zdroje Datová vrstva informačního systému 23 Datová vrstva informačního systému 24 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 6

Připojení k datovému zdroji // Alokace zástupce pro správce ovladačů ODBC SQLHENV henv; SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&hEnv); // Deklarace požadované verze ODBC SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0); // Alokace zástupce pro databázové připojení SQLHDBC hdbc1; SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc); // Připojení k databázi SQLConnect(hDbc, database, SQL_NTS, user, SQL_NTS, password, SQL_NTS); // jméno zdroje dat // uživatel // heslo Inicializace aplikace // Získání informací o SŘBD, ovladači,... SQLCHAR dbms_name[40]; SQLGetInfo(hDbc, SQL_DBMS_NAME, dbms_name, sizeof(dbms_name), NULL); // Alokace zástupce pro příkaz (dotaz) SQLHANDLE hstmt; SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hStmt); Datová vrstva informačního systému 25 Datová vrstva informačního systému 26 Vytvoření a provedení dotazu Přímé provedení dotazu SQLCHAR query[] = INSERT INTO ; SQLExecDirect(hStmt, query, SQL_NTS); Připravený dotaz SQLCHAR* query = SELECT jmeno FROM uziv WHERE login=? ; SQLPrepare(hstmt, query, SQL_NTS); SQLBindParameter(hStmt, 1, ); SQLExecute(hStmt); Získání výsledku // Svázání proměnných s výsledkem dotazu SQLCHAR jmeno[30]; SQLINTEGER jmeno_ind; SQLBindCol(hStmt, 1, SQL_C_CHAR, jmeno, sizeof(jmeno), &jmeno_ind); // Čtení výsledků while ( SQLFetch(hStmt)!= SQL_NO_DATA ) { if( jmeno_ind!= SQL_NULL_DATA ) cout << jmeno; Datová vrstva informačního systému 27 Datová vrstva informačního systému 28 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 7

Odpojení od zdroje dat // uvolnění zástupce příkazu SQLFreeHandle(SQL_HANDLE_STMT, hstmt); // odpojení od databáze SQLDisconnect(hDbc); PHP & MySQL // uvolnění zástupce příkazu SQLFreeHandle(SQL_HANDLE_DBC, hdbc); // uvolnění zástupce prostředí SQLFreeHandle(SQL_HANDLE_ENV, henv); Datová vrstva informačního systému 29 Přístup k databázím z PHP Modulární struktura sdílené knihovny (.dll,.so) Podpora mnoha databázových rozhraní ODBC MySQL, PostgreSQL Microsoft SQL Server Oracle, Sybase, Informix dbase Databáze MySQL MySQL Server Databáze Tabulky Datová vrstva informačního systému 31 Datová vrstva informačního systému 32 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 8

Správa databáze Standardní klienti mysql mysqladmin mysqldump Aplikace s grafickým rozhraním MySQL Control Center WinMySQLAdmin Aplikace s WWW rozhraním phpmyadmin Připojení k databázi // Připojení k serveru + autentizace mysql_connect("localhost", "uziv", "heslo"); // Výběr databáze mysql_select_db( databaze"); Datová vrstva informačního systému 33 Datová vrstva informačního systému 34 Provedení dotazu $query = SELECT login,jmeno FROM uziv ; $h = mysql_query($query); while( $r = mysql_fetch_object($h) ) { echo $r->login: $r->jmeno\n ; mysql_free_result($h); Provedení dotazu $h = mysql_query($query); $n = mysql_num_rows($h); for( $i = 0; $i < $n; $i++) { $r = mysql_fetch_array($h); echo <tr>\n ; foreach( $r as $val ) echo \t<td>$val</td>\n ; echo </tr>\n ; mysql_free_result($h); Datová vrstva informačního systému 35 Datová vrstva informačního systému 36 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 9

Další zdroje informací ODBC www.microsoft.com/data/odbc/ www.unixodbc.org/ JDBC java.sun.com/products/jdbc PHP&MySQL www.php.net www.mysql.com www.phpmyadmin.net Datová vrstva informačního systému 37 (c) Miroslav Beneš, Katedra informatiky FEI VŠB-TU Ostrava 10