Hasonló dokumentumok
Adatbázisok webalkalmazásokban

Java programozási nyelv 11. rész Adatbázis-programozás

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

JDBC Adatbáziskapcsolat objektumok SQL parancsok küldése Kötegelt módosítások ResultSet Tranzakciók

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

B I T M A N B I v: T M A N

Kapcsolat objektumok. Válasz feldolgozása Tranzakciók DAO tervezési minta

Java Programozás 10. Ea: JDBC. SQLite alapokon

Database Systems II. ZH összefoglaló

JDBC. A JDBC alkalmazása

JDBC Adatbáziskapcsolat objektumok SQL parancsok küldése Kötegelt módosítások ResultSet Tranzakciók DAO tervezési minta 1 / 45

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

Témák. JDBC Adatbázisok JDBC használatának lépései Tranzakciók Adatbázis tervezés EK diagram

Programozási technológia

SZAKDOLGOZAT. Szabó Attila

OO PDO. Tehát PDO használatával, könnyen átállhatunk egy másik adatbáziskezelőre, anélkül hogy a kódot teljes egészében újraírnánk.

A Java nyelv. VI. Adatbázis-kezelés Javaban, Példaprogram Az elôzô részben láthattuk, hogy a Java ideális programozási nyelv perszisztens objektumok

Java Database Connectivity (JDBC)

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

B I T M A N B I v: T M A N

JDBC - adatbáziskezelés

JAVA PROGRAMOZÁS 8.ELŐADÁS

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Adatbázis kezelés Delphiben. SQL lekérdezések

A WEB programozása - JSP1 dr.gál Tibor őszi félév

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

Adatbázisok I. Definíció: DDL: - objektum létrehozás CREATE - objektum megszüntetés DROP - objektum módosítás ALTER

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

MDAC - Microsoft Data Access Components

Tartalomjegyzék. Tartalomjegyzék 1. Az SQL nyelv 1 Az SQL DDL alapjai 2

Kliens oldali SQL-API

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

JavaServer Pages (JSP) (folytatás)

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Adatbázis használata PHP-ből

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Kilencedik témakör: Lazarus-Firebird. Készítette: Dr. Kotsis Domokos

Adatbázis-kezelés. Harmadik előadás

B IT MAN 43/1 B IT MAN. Adatbázis Rendszerek II. Ellenőrző kérdések JDBC. v:

Adatbázis Rendszerek II. 7. Oracle JDBC

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Adatbázisok-1 előadás Előadó: dr. Hajas Csilla

Beszerzési logisztika támogatása az optimális beszállító kiválasztása révén

B I T M A N B I v: T M A N

IBM WebSphere Adapters 7. változat 5. alváltozat. IBM WebSphere Adapter for Oracle E-Business Suite felhasználói kézikönyv 7. változat 5.

SQL ALAPOK. Bevezetés A MYSQL szintaxisa Táblák, adatok kezelésének alapjai

SQL jogosultság-kezelés. Privilégiumok Grant és Revoke Grant Diagrammok

Tranzakciókezelés PL/SQL-ben

Adatbázisok* tulajdonságai

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 4.ELŐADÁS. Adatbázis alapú alkalmazások készítése PHP-ben

Adatbázisok gyakorlat

A könyv tartalomjegyzéke

Java és web programozás

SQL DDL-2 (aktív elemek) triggerek

Java és web programozás

MySQL kontra MongoDB programozás. SQL és NoSQL megközelítés egy konkrét példán keresztül

Adatbázis rendszerek I.

Adatba ziskezeles. Java tutorial JDBC. JDBC: Java Data Base Connectivity. Pelda: bro ker ceg. Rela cio s adatba ziskezeles - attekintes

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Adatbázis Rendszerek II. 8. Gyakorló környezet

Adatbázis-kezelés, információs-rendszerek

Megtanuljuk, hogyan lehet egy web-alkalmazással adatbázishoz csatlakozni Pontosan megnézzük a PHP lehetőségeit o MySQL-hez o Oracle-höz

PHP-MySQL. Adatbázisok gyakorlat

LBRA6i integrált rendszer

S04-2 Elosztott alkalmazások készítése

Adatbázis használat I. 5. gyakorlat

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Bevezetés: az SQL-be

A relációs adatbáziskezelés szabványos nyelve Két fő csoportba sorolhatók az utasításai

LOGISZTIKAI ADATBÁZIS RENDSZEREK JOIN, AGGREGÁCIÓ

Az SQL adatbázisnyelv: DML

Oracle Audit Vault and Database Firewall. Gecseg Gyula Oracle DBA


Adatbázisok I A relációs algebra

LOGISZTIKAI ADATBÁZIS RENDSZEREK BEVEZETÉS

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

SQL haladó. Külső összekapcsolások, Csoportosítás/Összesítés, Beszúrás/Törlés/Módosítás, Táblák létrehozása/kulcs megszorítások

Java Programozás 10. Ea: JDBC. SQLite alapokon

BEVEZETÉS Az objektum fogalma

ADATBÁZIS-KEZELÉS FÉLÉVES FELADAT

Adatbázis Rendszerek II. 2. Ea: Gyakorló környezet

SZAKDOLGOZAT. Vígh Gábor DEBRECEN 2009.

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Adatbázis Rendszerek II. 2. Gyakorló környezet

Táblakezelés: Open SQL Internal table. Tarcsi Ádám: Az SAP programozása 1.

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Adatbázis tartalmának módosítása

Informatikai képzés Információs rendszerek dr. Hajas Csilla (ELTE IK)

Access adatbázis elérése OLE DB-n keresztül

Adatbázis-kezelés ODBC-vel

Adatbázis Rendszerek II. 6. PLSQL Triggerek 32/1B IT MAN

Adatbázis-lekérdezés. Az SQL nyelv. Makány György

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

SQLServer. DB Recovery modes

Átírás:

Adatbázis rendszerek II. V. előadás Előadó: Barabás Péter Dátum: 2008. 10. 16. 1

Java DataBase Connectivity Gazdanyelv: JAVA SQLJ (beágyazott SQL) Kiindulópont: SQL-CLI (X/Open) Hasonló az ODBC-hez nyelvi eltérések: mutatók hiánya objektumorientáltság Java-ban íródott Megköveteli az ANSI SQL92 támogatást 2

-adatbázis interakció 3

rétegei JAVA alkalmazás API menedzser meghajtó API Hálózati protokoll meghajtó -ODBC meghajtó ODBC meghajtó Specifikus meghajtó Nyilvános protokoll Speciális adatbázis hozzáférési protokoll 4

szolgáltatásai összekapcsolódás a relációs adatbázissal SQL utasítások végrehajtása SQL lekérdezések eredményeinek feldolgozása 5

szintjei alap (Core) API java.sql.* csomag tartalmazza az adatbázis eléréséhez szükséges alapvető osztályokat standard kiterjesztés (Extension) API javax.sql.* csomag további - haladó szintű csomagok JTA API (Java Transakció API) 6

Adatbázis alkalmazás modell Kétrétegű modell JAVA alkalmazás DBMS Háromrétegű modell Kliens JAVA alkalmazás szolgáltató réteg (pl. j2ee szerver) DBMS 7

Driverek rengeteg driver található a piacon http://developers.sun.com/product/jdbc/drivers 221 driver található a Java egy interfész halmazt követel meg, melyet a gyártóknak meg kell írniuk a megvalósítások a különböző driverek a szükséges meghajtók beregisztrálása után az adatbázisok kezelése elérhetővé válik az alkalmazások számára 8

Driver típusok -ODBC átjáró (bridge) -hálózati protokoll -saját kliens API bridge saját Java API 9

-ODBC bridge JAVA alkalmazás driver SQL parancs Eredményhalmaz ODBC driver Megfelelő protokoll DBMS 10

-hálózati protokoll JAVA alkalmazás driver SQL parancs Eredményhalmaz driver Köztes réteg Megfelelő protokoll DBMS 11

-saját API bridge JAVA alkalmazás driver SQL parancs Eredményhalmaz DBMS saját API Megfelelő protokoll DBMS 12

-saját JAVA API JAVA alkalmazás driver SQL parancs DBMS protokollon Eredményhalmaz DBMS protokollon DBMS 13

osztályok 14

kapcsolat felépítése Megfelelő driver regisztrálása dinamikus, direkt betöltés Class.forName( driver class); v. DriverManager.registerDriver( driver class); Class.forName( oracle.jdbc.driver.oracledriver ); v. DriverManager.registerDriver(new oracle.jdbc.driver.oracledriver()); statikus betöltés induláskor jdbc.drivers rendszerparaméter beállítása jdbc.drivers=oracle.jdbc.driver.oracledriver: 15

kapcsolat felépítése II. DataSource interfész ( 2.0) gyártó specifikus OracleDataSource ods = new OracleDataSource(); előnyei: Connection pooling egy fizikai adatbázis kapcsolaton több logikai kapcsolat Connection caching logikai kapcsolatok csoportja, mely ugyanazon adatbázishoz és sémához kapcsolódik hatékonyabb adatbázis elérés köztes rétegben ideális (JSP, Servlet, EJB) hátrány: adatbázis-kezelő rendszerfüggő megvalósítás 16

kapcsolat felépítése III. Connection objektum létrehozása Connection c = DriverManager.getConnection(Adatbázis URL, user, pass); Adatbázis URL jdbc:alprotokoll:adatforrás leírása Connection conn = DriverManager.getConnection( jdbc:oracle:thin: @arrakis.iit.uni-miskolc.hu:1521:info, proba, proba ); 17

kapcsolat felépítése IV. DataSource interfész 1. fizikai kapcsolat definiálása OracleDataSource ods = new OracleDataSource(); ods.setdrivertype( thin ); ods.setservername( arrakis.iit.uni-miskolc.hu ); ods.setnetworkprotocol( tcp ); ods.setdatabasename( info ); ods.setportnumber(1521); ods.setuser( proba ); ods.setpassword( proba ); 2. JNDI név regisztrálása Context ctx = new InitialContext(); ctx.bind( jdbc/infodb,ods); 18

kapcsolat felépítése V. DataSource interfész 3. logikai kapcsolat létrehozása OracleDataSource oconn = (OracleDataSource)ctx.lookup( jdbc/infodb ); Connection conn = oconn.getconnection(); Tranzakció-kezelés beállítása Connection.setAutoCommit(boolean ertek); ertek: TRUE: minden DML után véglegesítés FALSE: COMMIT, ROLLBACK a programból 19

SQL parancs végrehajtás Interfészek: Statement egyszerű SQL parancsokhoz (statikus) PreparedStatement bemenő paraméterekkel rendelkező SQL parancsokhoz (kvázi-statikus, dinamikus) CallableStatement ki- és/vagy bemenő paraméterekkel rendelkező SQL parancsokhoz, tárolt SQL eljárásokhoz 20

Statement Létrehozás: Statement stmt = Connection.createStatement(); Végrehajtás: executequery( SQL parancs ): lekérdezésre használható ResultSet típusú objektumban adja vissza az eredményt executeupdate( SQL parancs ); DML vagy DDL utasítások esetén használható a megváltozott sorok számát adja vissza, DDL esetén nullát executeupdate( SQL parancs ); tetszöleges SQL utasítás végrehajtására, például tárolt eljárás hívására a visszaadott eredménynek több komponense is lehet 21

Statement példák Statement stmt = Connection.createStatement(); ResultSet rs = stmt.executequery( select * from auto ); int cnt = stmt.executeupdate( insert into auto values( aaa- 111, Opel, piros,5,1000000, 123456ab ) ); int cnt = stmt.executeupdate( update auto set ar=ar*1.2 ); int cnt = stmt.executeupdate( delete from auto where rsz= aaa-111 ); 22

SQL utasítások kötegelt feldolgozása Statement.addBatch( SQL parancs ); Statement.executeBatch(); eredmény: egésztömb Statement.clearBatch(); Megjegyzések: csak DML és DDL utasítások lehetnek kötegben sikeres végrehajtás a kötegpuffer törlődik hiba esetén: SQLException v. BatchUpdateException 23

PreparedStatement Előnyei: az SQL utasítás előfordítása megtörténik többszöri futtatás esetén gyorsabb lehet bemenő paramétere Létrehozása: Connection.prepareStatement( ); a bemenő paraméterek helyén? van az SQL parancsban PreparedStatement pstmt=conn.preparestatement( INSERT INTO auto VALUES(?,?,?,?,?,?) ); 24

PreparedStatement - paraméterek Paraméterek megadása végrehajtás előtt PreparedStatement.setXXX(pozíció, érték); pozíció: a paraméter poziciója (melyik? ) XXX : típus pstmt.setstring(1, aaa-111 ); pstmt.setstring(3, piros ); pstmt.setint(5,1000000); pstmt.setstring(2, Opel ); pstmt.setint(4,5); pstmt.setstring(6, 12345678ab ); Végrehajtás executequery(), executeupdate(), execute(), addbatch(), executebatch() 25

CallableStatement Tárolt függvények, eljárások hívása Létrehozása: Connection.prepareCall(utasítás); CallableStatement cs = conn.preparecall( { call eljárásnév(paraméterek)} ); CallableStatement cs = conn.preparecall( { call auto_felvitel(?,?,?,?,?,?} ); cs.setstring(1, aaa-111 ); cs.setstring(2, Opel ); cs.setstring(3, piros ); cs.setint(4,5); cs.setint(5,1000000); cs.setstring(6, 12345678ab ); cs.executequery(); 26

CallableStatement - paraméterek IN paraméterek hasonlóan a PreparedStatement-hez? az utasításban, setxxx fv. a beállításnál OUT paraméterek cs.registeroutparameter(pozicio, típus); cs.getxxx(pozicio); CallableStatement cs = Connection.prepareCall( {? = call getautokdb(?)} ); cs.registeroutparameter(1,java.sql.types.integer); cs.setstring(2, piros ); ResultSet rs = cs.executequery(); int x = rs.getint(1); 27

Eredmény feldolgozása Lekérdezés eredménye ResultSet objektumba kerül Statement.executeQuery( SQL utasítás ); v. Statement.getResultSet(); ResultSet rs = stmt.executequery( select * from auto ); ResultSet típusok: CLOSE_CURSORS_AT_COMMIT CONCUR_READ_ONLY CONCUR_UPDATEABLE FETCH_FORWARD FETCH_REVERSE FETCH_UNKNOWN HOLD_CURSORS_OVER_COMMIT TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE 28

Eredmény feldolgozása II. Eredményhalmaz bejárása soronként (CURSOR): next() következő sor previous() előző sor last() utolsó sor first() első sor afterlast() eredménytábla vége után beforefirst() eredménytábla eleje elé absolute(pozíció) paraméterül megadott számú sor relative(pozíció) aktuálishoz képest +pozíciódik sor (!negatív is lehet) 29

Eredmény feldolgozása III. Érték kiolvasása egy sor esetén: getxxx(oszlopindex); v. getxxx(oszlopnév); XXX: típus String cím = rs.getstring( SZIN ); Érték módosítása: updatexxx(oszlopnév, érték); XXX: típus String cím = rs.updateint( KOR,10); 30

Eredmény feldolgozása IV. Sor törlése: deleterow(); Sor beszúrása: insertrow(), movetoinsertrow() Változások érvényesítése az adatbázisban updaterow() 31

Eredmény információk ResultSetMetaData objektum ResultSetMetaData meta = rs.getmetadata(); Fontosabb információk: getcolumncount() mezők száma getcolumnname(i) i. mező neve getcolumntype(i) i. mező típusa gettablename(i) az i.-dik mező táblája 32

Típusok 33

Típusok II. 34

Típusok III. 35

Kapcsolat lezárása Eredménytábla lezárása: ResultSet.close(); Statement lezárása: Statement.close(); Adatbáziskapcsolat lezárása: Connection.close(); 36

Hibakezelés - hibaforrások kapcsolat létrehozási hiba SQL utasítás feldolgozási, végrehajtási hiba jogosultság, privilégium hibák hálózati hibák SQLException getnextexception(); getsqlstate(); geterrorcode(); SQLWarning printwarnings(sqlwarning warn); getnextwarning(); 37

Hibakezelés try { } catch (SQLException e) { } catch (SQLWarning w) { } 38

Példa hibakezelésre try { // forráskód } catch (SQLException e) { while(e!= null) { System.out.println("\nSQL Exception:"); System.out.println(e.getMessage( )); System.out.println("ANSI-92 SQL State: " + e.getsqlstate( )); System.out.println("Vendor Error Code: " + e.geterrorcode( )); e = e.getnextexception( ); } } 39

Köszönöm a figyelmet! 40