8. oracle jdbc -...
TRANSCRIPT
![Page 1: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/1.jpg)
B IT MAN117/1 v: 2019.02.13B IT MAN
Adatbázis Rendszerek II.
8. Oracle – JDBC
![Page 2: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/2.jpg)
B IT MAN117/2
Témakörök
◼ Statement
◼ PreparedStatement
◼ JAVA «-» adatbázis-kezelés
◼ JDBC alapok
◼ CallabeStatement
◼ Tranzakció kezelés
![Page 3: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/3.jpg)
B IT MAN117/3
A cél:
Jávás kliensről manipulálni az adatbázist.
![Page 4: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/4.jpg)
B IT MAN117/4
Kis kitérő
◼ Adatbázis elérési módok:
– Beágyazott SQL: egy algoritmikus nyelvbe (C,
Pascal, FORTRAN, stb.) ágyazva alkalmazzuk az
SQL nyelv elemeit. Az algoritmikus feladatokat a
programnyelv, az adatbázissal kapcsolatos
műveleteket az SQL végzi. Hátrány: ha változik az
adatbázis, teljesen újra kell írni a programot.
– ODBC (Open Database Connenctivity): szabványos
eljáráskészlet az egyes adatbázisokhoz. Technológia:
drivereken keresztül érhetők el az adatbázisok, a
driverek felülete egységesen programozható. Így ha
változik az adatbázis, csak a drivert kell lecserélni.
![Page 5: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/5.jpg)
B IT MAN117/5
Kis kitérő (2)
◼ Adatbázis elérési módok:
– OO LI (Object Oriented Line Interface): adatbázis
elérés objektum orientált módon (JDBC, ADO.NET)
– WEB LI: adatbázis elérés webes felületről
![Page 6: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/6.jpg)
B IT MAN117/6
A probléma és megoldása
◼ A Java objektum-orientált, az adatbázisok többnyire még
nem azok.
◼ Az adatbázis eléréséhez szükséges egy interfész, ennek
kezelése lehet adatbázis függő – API-hívások JNI-n
keresztül (Java Native Interface),
◼ de lehet adatbázis független is – JDBC (Java Data Base
Connectivity).
◼ Adatmanipulációs nyelv mindkét esetben az SQL marad.
![Page 7: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/7.jpg)
B IT MAN117/7
JDBC API
◼ Java nyelven íródott osztályokat és interfészeket
tartalmazó csomagok, melyek egy standard API-t
biztosítanak adatbázis-keretrendszerek, valamint
adatbázis alapú alkalmazások fejlesztésére.
◼ A JDBC API előnye abban áll, hogy elvileg bármilyen
adatforrást elérhetünk vele bármilyen platformon, melyen
a java virtuális gép futtatható.
◼ Nem kell tehát minden adatbázisszerverre külön
programot írni, hanem ugyanaz a kód működni fog
bármely adatbázisszerverrel.
![Page 8: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/8.jpg)
B IT MAN117/8
JDBC használat
◼ Adatbázis feltétel: szükséges egy meghajtó-program
(driver), amellyel az adatbázis-kezelő kielégíti a JDBC
specifikációt.
◼ A driver rendszerfüggő, az adatbázis gyártójának
weblapjáról kell letölteni.
◼ Java programozó: a java.sql és a javax.sql
csomagokban található osztályok, metódusok
segítségével dolgozik, és a programhoz csatolja a
használt adatbázis-kezelő JDBC driver-ét.
![Page 9: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/9.jpg)
B IT MAN117/9
A megoldás (1.)
Kétrétegű megoldás
Szerver-oldal
SQL
Kliens-oldal
Piros, Kék, ZöldDriver
![Page 10: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/10.jpg)
B IT MAN117/10
A megoldás (2.)
Háromrétegű megoldás
Szerver-oldal
Alkalmazás
SQL
DB
Kliens-oldal
Piros, Kék, Zöld
Driver
![Page 11: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/11.jpg)
B IT MAN117/11
Témakörök
◼ Statement
◼ PreparedStatement
◼ JAVA «-» adatbázis-kezelés
◼ JDBC alapok
◼ CallabeStatement
◼ Tranzakció kezelés
![Page 12: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/12.jpg)
B IT MAN117/12
Az adatbázis-programozás lépései
Lekérdezés
Lekapcsolódás
Kapcsolódás
Eredmények
feldolgozása
![Page 13: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/13.jpg)
B IT MAN117/13
Az adatbázis-programozás lépései
Lekapcsolódás
Driver regisztrálása
Kapcsolódás a DBMS-hez
Kapcsolódás
Lekérdezés
Eredmények
feldolgozása
![Page 14: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/14.jpg)
B IT MAN117/14
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (STATEMENT)
összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés
![Page 15: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/15.jpg)
B IT MAN117/15
Az adatbázis-programozás lépései
Lekapcsolódás
Kapcsolódás
Az eredményhalmaz (CURSOR)
rekordonkénti bejárása
Az értékek átadása
programváltozóknak
Lekérdezés
Eredmények
feldolgozása
![Page 16: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/16.jpg)
B IT MAN117/16
Az adatbázis-programozás lépései
Kapcsolódás
Lekérdezés
Eredmények
feldolgozása
Eredményhalmaz lezárása
SQL kérés lezárása
Kapcsolat lezárásaLekapcsolódás
![Page 17: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/17.jpg)
B IT MAN117/17
Az adatbázis-programozás lépései
Driver regisztrálása
Kapcsolódás a DBMS-hez
Kapcsolódás
SQL kérés (STATEMENT)
összeállítása
SQL kérés elküldése
Az eredményhalmaz (CURSOR)
rekordonkénti bejárása
Lekérdezés
Az értékek átadása
programváltozóknak
Eredményhalmaz lezárása
SQL kérés lezárása
Eredmények
feldolgozása
Lekapcsolódás
B I T MAN
Kapcsolat lezárása
![Page 18: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/18.jpg)
B IT MAN117/18
JDBC alapok B I T MAN
Kliens számítógép
![Page 19: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/19.jpg)
B IT MAN117/19
PreparedStatement
Connection
DriverManager
ResultSet
ge
tCo
nn
ectio
np
rep
are
Sta
tem
en
tStatement
extends extendsCallableStatement
exe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészek
setXxx
![Page 20: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/20.jpg)
B IT MAN117/20
A JDBC programozás lépései (1)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt (ResultSet)
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 21: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/21.jpg)
B IT MAN117/21
DriverManager
◼ Feladatai:
– Kezeli a különböző adatbázisok elérését szolgáló
driver-eket,
– Kezeli a connection-t (kapcsolatot),
– Kezeli a statement-eket (SQL kifejezéseket),
– Kezeli a resultset-eket (cursorokat).
![Page 22: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/22.jpg)
B IT MAN117/22
Az adatbázis-programozás lépései
Lekapcsolódás
Driver regisztrálása
Kapcsolódás a DBMS-hez
Kapcsolódás
Lekérdezés
Eredmények
feldolgozása
![Page 23: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/23.jpg)
B IT MAN117/23
A JDBC programozás lépései (4)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 24: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/24.jpg)
B IT MAN117/24
A Driver (meghajtó) betöltése (1)
◼ Feltétel: a Java keresési útvonalán elérhető legyen a
fizikai driver.
Oracle-höz: ojdbc6.jar
◼ Megteremtése: bemásolni a drivert a Java keresési
útvonalában szereplő könyvtárba, és telepíteni:
set classpath=.; ojdbc6.jar
1. 2.3.
4. 5.
![Page 25: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/25.jpg)
B IT MAN117/25
A Driver (meghajtó) betöltése (1)
Ha a driver elérhető a keresési útvonalon, regisztrálható
Javaban:
import java.sql.*;
public void Reg(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
System.out.println("Hibás driver regisztráció!"+e.getMessage());
}
}
![Page 26: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/26.jpg)
B IT MAN117/26
◼ Grafikus felületen:
import java.sql.*;
import java.awt.*;
import javax.swing.*;
public void Reg(){
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(
null,"Hibás driver regisztráció!", "BitMan mondja: ",2);
}
}
A Driver (meghajtó) betöltése (2)
![Page 27: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/27.jpg)
B IT MAN117/27
A DriverManager működése
◼ A DriverManager osztály tartalmaz egy listát a regisztrált
driverekkel.
◼ A getConnection() metódus hívásakor megpróbálja
megtalálni a megfelelő drivert, mely kapcsolódni tud az
URL-ben megadott adatbázishoz (sorba kipróbálja a
drivereket, míg egyet talál, amely kapcsolódik a
megfelelő URL segítségével)
◼ Ezt a manager-szintet el lehet kerülni direkt Driver
metódus hívásával. (csak ritkán használjuk, pl. ha két
driver is van, amelyik hozzá tud kapcsolódni egy
bizonyos adatbázishoz és explicit szeretnénk
meghatározni, hogy melyikkel akarunk kapcsolódni.)
![Page 28: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/28.jpg)
B IT MAN117/28
JDBC driver-ek
◼ A driver egy kliens oldali adapter (program), mely a java program
kéréseit átalakítja az adatbázisszerver számára értelmezhető
formára, és az adatbázisszerver által küldött válaszokat
visszaalakítja a java program számára értelmezhető formára.
◼ Besorolásuk (típusok):
– Type 1: JDBC – ODBC átjáró (híd),
– Type 2: JDBC – Natív API driver
– Type 3: JDBC – Hálózat protokoll (köztesréteg driver)
– Type 4: JDBC – Direkt adatbázis driver
![Page 29: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/29.jpg)
B IT MAN117/29
Type 1: JDBC – ODBC átjáró
Adatbázis kezelő program
Adatbázis
hálózatiadatbázisprotokoll
Java program
JDBC-ODBC átjáró
ODBCdriver
Kliens oldal Szerver oldal
◼ Már meglévő ODBC driver használatát teszi lehetővé
◼ A Type 1 driver átalakítja a JDBC hívásokat ODBC hívásokká
◼ Az ODBC driver egy az adatbázis gyártója által készített driverhez
(natív program könyvtár) kapcsolódik, ez már eléri az adatbázist
◼ Ez a leglassabb driver típus
Natívprogramkönyvtár
Type 1
![Page 30: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/30.jpg)
B IT MAN117/30
Type 2: JDBC – Natív API driver
Adatbázis kezelő program
Adatbázis
hálózatiadatbázisprotokoll
Java program
Natív API
driver
Kliens oldal Szerver oldal
◼ Natív program könyvtár: az adatbázis típusától függő, az adatbázis
készítői által írt driver. (Natív ≈ Közvetlenül érthető, nem igényel
további átalakítást, konvertálást.
◼ A Type 2 JDBC driver a JDBC hívásokat közvetlenül átalakítja az
adott típusú adatbázis API hívásaira.
◼ Gyorsabb, mint a Type 1 JDBC driver.
◼ Ilyen típusúak az Oracle oci driverek.
Natívprogramkönyvtár
Type 2
![Page 31: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/31.jpg)
B IT MAN117/31
Type 3: JDBC – Hálózati protokoll (köztesréteg driver)
Adatbázis kezelő program
Adatbázis
hálózatiadatbázisprotokoll
Java program
Hálózatiprotokoll
Kliens oldal Szerver oldal
◼ A Javában írt, hordozható driver a JDBC hívásokat adatbázis-
független hálózati protokollhívásokká alakítja, melyeket egy
megfelelő szerverprogram értelmez és alakít át az adott adatbázis-
kezelő API-jának hívásaivá.
◼ A Type 3 JDBC driver nem közvetlenül az adatbázissal, hanem egy
külön szerverprogrammal kommunikál.
Köztes réteg
Alkalmazás szerver
Type 3
![Page 32: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/32.jpg)
B IT MAN117/32
Type 4: JDBC – Direkt adatbázis driver
Adatbázis kezelő program
Adatbázis
hálózatiadatbázisprotokoll
Java program
Direkt adatbázis driver
Kliens oldal Szerver oldal
◼ Javában írt meghajtó program, amely a JDBC hívásokat közvetlenül
a megfelelő adatbázis-kezelő adatmanipulációs protokolljának
hívásaivá alakítja át.
◼ Nincs szükség közbenső szerverprogramra.
◼ Ez a leggyorsabb driver típus.
◼ Ilyen típusú az Oracle thin driver.
Type 4
![Page 33: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/33.jpg)
B IT MAN117/33
A JDBC programozás lépései (4)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 34: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/34.jpg)
B IT MAN117/34
Kapcsolat létrehozása
public Connection Kapcs(String host, String dbname,
String uname, String pword){
Connection conn = null;
try {
String url = "jdbc:oracle:thin:@"+host+":1521:"+dbname;
conn = DriverManager.getConnection(url, uname, pword);
} catch (SQLException e) {
System.out.println("AB Kapcsolódás hiba: "+e.getMessage());
conn = null;
}
return conn;
}
![Page 35: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/35.jpg)
B IT MAN117/35
A kapcsolat lezárása
public void Lekapcs(){
try {
conn.close();
} catch(Exception e) {
System.out.println("Lekapcs hiba: "+e.getMessage());
}
}
![Page 36: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/36.jpg)
B IT MAN117/36
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (STATEMENT)
összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés
![Page 37: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/37.jpg)
B IT MAN117/37
Munka az adatbázisban (1)
◼ Amint a kapcsolat létrejött, az adatbázisnak SQL
parancsokat küldhetünk.
◼ A JDBC API nem korlátoz a kiadható SQL parancsok
tekintetében: azaz adatbázis-specifikus vagy akár nem
SQL parancsokat is használhatunk.
◼ Azt azonban biztosítanunk kell, hogy az adatbázis fel
tudja dolgozni a parancsokat. Pl. hívhatunk tárolt
eljárásokat egy olyan adatbázisra, amelyik nem támogatja
ezeket, de egy kivétel fog dobódni.
![Page 38: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/38.jpg)
B IT MAN117/38
Munka az adatbázisban (2)
◼ A JDBC API három interfészt biztosít SQL parancsok
küldésére:
1. Statement – paraméter nélküli SQL parancsok
hívására
2. PreparedStatement – paraméteres (?), előfordított
SQL parancsok hívására
3. CallableStatement – Tárolt eljárások hívására
![Page 39: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/39.jpg)
B IT MAN117/39
◼ Végrehajtási módok:
1. executeUpdate():
Adatmanipulációs (DML: insert, update, delete) és
adatdefiníciós (DDL: create/drop/alter) utasítások
futtatására
2. executeQuery():
Eredménytáblát visszaadó utasítások futtatására
(SELECT)
3. execute():
Mindkét típus végrehajtására alkalmas
Munka az adatbázisban (3)
![Page 40: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/40.jpg)
B IT MAN117/40
Munka az adatbázisban (4)
SQL statement
Végrehajtó parancsVisszatérő
érték típusaMagyarázat
Select executeQuery(sqlp); ResultSetRekordok (adatok)
InsertUpdateDeleteCreateDropAlter
executeUpdate(sqlp); IntAz érintett sorok száma, vagy 0.
Tárolt eljárások
execute(sqlp); booleanIgaz, ha az első visszatérő adat ResultSet.
![Page 41: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/41.jpg)
B IT MAN117/41
A JDBC programozás lépései (4)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
B IT MAN
![Page 42: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/42.jpg)
B IT MAN117/42
Az adatbázis-programozás lépései
Kapcsolódás
Lekérdezés
Eredmények
feldolgozása
Eredményhalmaz lezárása
SQL kérés lezárása
Kapcsolat lezárásaLekapcsolódás
![Page 43: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/43.jpg)
B IT MAN117/43
Erőforrások felszabadítása
◼ ResultSet lezárása: rs.close();
◼ Statement lezárása: stmt.close();
◼ PreparedStatement lezárása: pstmt.close();
◼ CallableStatement lezárása: cstmt.close();
◼ Kapcsolat lezárása: conn.close();
![Page 44: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/44.jpg)
B IT MAN117/44
Bolt adatbázis – alapprogram
Abkezel_demo.java
import java.sql.*;public class Abkezel_demo {
private Connection conn = null;private static java.io.Console d = System.console();
public void DrReg(){try {
Class.forName("oracle.jdbc.driver.OracleDriver");d.printf("Sikeres driver regisztrálás\n");
} catch(Exception ex) { System.err.println(ex.getMessage());
}}
(3/1)
![Page 45: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/45.jpg)
B IT MAN117/45
Bolt adatbázis – alapprogram
Abkezel_demo.java
public void Kapcs(){//String url = "jdbc:oracle:thin:@193.6.5.58:1521:xe";
//driver:@host:port:adatbázis neve;String url = "jdbc:oracle:thin:@localhost:1521:XE";try {
conn = DriverManager.getConnection(url,"system", "jelszo");d.printf("Sikeres kapcsolódás\n");
} catch(Exception ex) {System.err.println(ex.getMessage());}}
public void LeKapcs(){if (conn != null) {
try {conn.close();d.printf("Sikeres lekapcsolódás");
} catch(Exception ex) {System.err.println(ex.getMessage());}}
}
(3/2)
![Page 46: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/46.jpg)
B IT MAN117/46
Bolt adatbázis – alapprogram
Abkezel_demo.java
public static void main(String args[]){Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();
abk.LeKapcs();}
} //Abkezel_demo vége
(3/3)
![Page 47: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/47.jpg)
B IT MAN117/47
Témakörök
◼ Statement
◼ PreparedStatement
◼ JAVA «-» adatbázis-kezelés
◼ JDBC alapok
◼ CallabeStatement
◼ Tranzakció kezelés
![Page 48: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/48.jpg)
B IT MAN117/48
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (STATEMENT)
összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés
![Page 49: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/49.jpg)
B IT MAN117/49
Statement
◼ A kapcsolat objektum createStatement()
metódusával jön létre,
◼ és az executeUpdate() vagy az executeQuery()
paranccsal hajtható végre.
Statement stmt = conn.createStatement();
Írás jellegű műveletekre: DML (insert, update, delete) és
DDL (create-, alter-, drop table)
int SorDb = stmt.executeUpdate("update ...");
Olvasásra: Select
ResultSet rs = stmt.executeQuery("select * from …");
B IT MAN
![Page 50: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/50.jpg)
B IT MAN117/50
A JDBC programozás lépései (2)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 51: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/51.jpg)
B IT MAN117/51
ge
tCo
nn
ectio
nPreparedStatement
Connection
DriverManager
ResultSet
pre
pa
reS
tate
men
tStatement
extends extendsCallableStatement
exe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészek
execute
Update
setXxx
![Page 52: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/52.jpg)
B IT MAN117/52
Statement használata
Abkezel_demo.java
public String Beszur (String kod, String nev){String sqlp="insert into kategoria values ('"+kod+"', '"+nev+"')";String vm = "";try {
s = conn.createStatement();s.executeUpdate(sqlp);vm = "OK! Rekord beszurva!";s.close();
} catch(Exception e) {vm = "Gond: "+e.getMessage();}return vm;
}public static void main(String args[]){Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();String vs = abk.Beszur("k07", "Festék");d.printf(vs+"\n");abk.LeKapcs();
}
(Kódrészlet!)
B IT MAN
![Page 53: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/53.jpg)
B IT MAN117/53
Kissé életszerűbben
Abkezel_demo.java
public static void main(String args[]){Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();
String kod = d.readLine("Kérem a kategória kódot: ");String nev = d.readLine("Kérem a kategória nevét: ");String vs = abk.Beszur(kod, nev);d.printf(vs+"\n");abk.LeKapcs();
}
(Kódrészlet!)
![Page 54: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/54.jpg)
B IT MAN117/54
Az adatbázis-programozás lépései
Lekapcsolódás
Kapcsolódás
Az eredményhalmaz (CURSOR)
rekordonkénti bejárása
Az értékek átadása
programváltozóknak
Lekérdezés
Eredmények
feldolgozása
![Page 55: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/55.jpg)
B IT MAN117/55
A JDBC programozás lépései (3)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 56: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/56.jpg)
B IT MAN117/56
ge
tCo
nn
ectio
nPreparedStatement
Connection
DriverManager
ResultSet
pre
pa
reS
tate
men
tStatement
extends extendsCallableStatement
exe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészek
execute
Update
setXxx
![Page 57: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/57.jpg)
B IT MAN117/57
ResultSet használata
Abkezel_demo.java
public int Select(){String sqlp = "select * from kategoria order by kkod";int out=0; String nev="", id="";d.printf("\nVégrehajtott parancs: "+sqlp+"\n");try {
s = conn.createStatement();s.executeQuery(sqlp);rs = s.getResultSet();while(rs.next()) {
out++;id = rs.getString("Kkod");nev = rs.getString("Nev").trim();d.printf("\n"+out+". adatsor: \t"+id+"\t"+nev);
}rs.close();s.close();
} catch(Exception e) {out = -1;System.out.println("Gond: "+e.getMessage());
}return out;
}
(Kódrészlet!)
B IT MAN
![Page 58: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/58.jpg)
B IT MAN117/58
ResultSet használata (2)
Abkezel_demo.java
public static void main(String args[]){Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();
int vi = abk.Select();d.printf("\nÉrintett rekordok száma: "+vi+"\n");abk.LeKapcs();
}
(Kódrészlet!)
B IT MAN
![Page 59: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/59.jpg)
B IT MAN117/59
Módosítható (updateable) ResultSet
…
Statement s = conn.createStatement(
ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_UPDATABLE);
String sqlp = "select kód, ár from termék where ár > 3000";
ResultSet rs = s.executeQuery(sqlp);
…
while (rs.next()) {
int x = rs.getInt("ár");
rs.updateInt("ár", (int)(x*(0.9)));
rs.updateRow();
}
![Page 60: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/60.jpg)
B IT MAN117/60
◼ ResultSet.TYPE_FORWARD_ONLY – A ResultSet
bejárása csak a legelső rekordtól, egyesével növekedve
lehetséges (sor1, sor2, sor3…)
– ResultSet.TYPE_SCROLL_INSENSITIVE
– ResultSet.TYPE_SCROLL_SENSITIVE
◼ ResultSet.CONCUR_UPDATABLE – Olvasható és
módosítható a ResultSet.
– ResultSet.CONCUR_READ_ONLY
Módosítható (updateable) ResultSet (2)
![Page 61: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/61.jpg)
B IT MAN117/61
Témakörök
◼ Statement
◼ PreparedStatement
◼ JAVA «-» adatbázis-kezelés
◼ JDBC alapok
◼ CallabeStatement
◼ Tranzakció kezelés
![Page 62: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/62.jpg)
B IT MAN117/62
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (PreparedStatement)
összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés
![Page 63: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/63.jpg)
B IT MAN117/63
PreparedStatement (1)
◼ Akkor használjuk, ha egy SQL utasítást többször is
végre akarunk hajtani.
◼ Előfordított SQL utasítás
– Ha a meghajtó támogatja az előfordítást
◼ Hatékonyabb, mint többször egy Statement-et kiadni
◼ Paraméterezhető (csak IN típusú paraméterek!)
– setXXX metódusok
– A paraméter típusának megfelelő setXXX kell!
◼ A Statement leszármazottja
![Page 64: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/64.jpg)
B IT MAN117/64
PreparedStatement (2)
◼ A kapcsolat objektum prepareStatement()metódusával jön létre,
◼ és az executeUpdate() vagy az executeQuery()paranccsal hajtható végre.
PreparedStatement pstmt = conn.prepareStatement(
"UPDATE table1 SET name = ? WHERE id = ?");
pstmt.setString(1, "Joe");
pstmt.setLong(2, 24357);
int SorDb = pstmt.executeUpdate();
PreparedStatement pstmt = conn.prepareStatement(
" SELECT a, b, c FROM Table1 WHERE id = ?");
pstmt.setInt(1, 4357);
ResultSet rs = pstmt.executeQuery(); B IT MAN
![Page 65: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/65.jpg)
B IT MAN117/65
A JDBC programozás lépései (5)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy PreparedStatement-
et (beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A PStatement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a PreparedStatement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 66: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/66.jpg)
B IT MAN117/66
setXxx
pre
pa
reS
tate
men
tg
etC
on
ne
ctio
nPreparedStatement
Connection
DriverManager
ResultSet
Statementextends extends
CallableStatemente
xe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészek
![Page 67: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/67.jpg)
B IT MAN117/67
PreparedStatement (3)
Alkalmazott[ ] beo = ...
PreparedStatement ps = conn.prepareStatement(
"insert into Alkalmazott" +
"(Név, Fizetés, Szülidő) values (?,?,?)" );
for(int i=0; i<beo.length; i++){
ps.setString(1, beo[i].getNév());
ps.setInt(2, beo[i].getFizetés());
ps.setDate(3, date.valueOf(beo[i].getSzülidő()));
ps.executeUpdate();
}
ps.close();"1988.07.16"
![Page 68: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/68.jpg)
B IT MAN117/68
Bolt – Termékek
![Page 69: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/69.jpg)
B IT MAN117/69
PreparedStatement (4)Abkezel_demo.java
public String Aremel(){String[ ] tkods = {"t02", "t05", "t13"};String vm = "";try {
PreparedStatement ps = conn.prepareStatement("update termek set ar = ar*(1.1) where tkod = ?");
for(int i=0; i<tkods.length; i++){ps.setString(1, tkods[i]);ps.executeUpdate();
}vm = "OK! Áremelés rendben!";ps.close();
} catch(Exception e) {vm = "Gond: "+e.getMessage();}return vm;
}public static void main(String args[]){
Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();String vm = abk.Aremel();System.out.println(vm);abk.LeKapcs();
}
(Kódrészlet!)
![Page 70: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/70.jpg)
B IT MAN117/70
Bolt – Termékek (áremelés után)
![Page 71: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/71.jpg)
B IT MAN117/71
A JDBC programozás lépései (6)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy PreparedStatement-
et (beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A PStatement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a PreparedStatement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 72: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/72.jpg)
B IT MAN117/72
pre
pa
reS
tate
men
tg
etC
on
ne
ctio
nPreparedStatement
Connection
DriverManager
ResultSet
Statementextends extends
CallableStatemente
xe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészek
setXxx
![Page 73: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/73.jpg)
B IT MAN117/73
PreparedStatement (5)
PreparedStatement ps = c.prepareStatement (
"select title, year_made from movies
where year_made >= ? and year_made < ?");
for (int ev = 1920; ev < 2010; ev += 10){
System.out.println("=Filmek a "+ev+"-s évekből");
ps.setInt(1, ev);
ps.setInt(2, ev+10);
ResultSet rs = ps.executeQuery();
while(rs.next()){
cim = rs.getString(1);
evs = rs.getInt(2);
System.out.println(cim+" - "+evs);
}
}
![Page 74: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/74.jpg)
B IT MAN117/74
Témakörök
◼ Statement
◼ PreparedStatement
◼ JAVA «-» adatbázis-kezelés
◼ JDBC alapok
◼ CallabeStatement
◼ Tranzakció kezelés
![Page 75: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/75.jpg)
B IT MAN117/75
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (CallableStatement)
összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés
![Page 76: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/76.jpg)
B IT MAN117/76
CallableStatement (1)
◼ Nem-SQL utasítások, pl. tárolt eljárások végrehajtására
◼ JDBC eljáráshívási módszer
{ call eljárásnév ([<par1>,<par2>, ...]) }{ ?= call függvénynév ([<par1>,<par2> ...]) }
◼ Lehetnek bemeneti és kimeneti paraméterei
– A kimenetiek típusát regisztrálni kell végrehajtás előtt
◼ A visszaadott eredményeket (pl. ResultSet) előbb kell
feldolgozni, mint a kimeneti paramétereket
◼ A PreparedStatement leszármazottja
![Page 77: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/77.jpg)
B IT MAN117/77
CallableStatement
◼ A kapcsolat objektum prepareCall() metódusával jön
létre,
◼ és az execute() paranccsal hajtható végre.
CallableStatement cs = con.prepareCall("{call EljNév(?,?)}");
cs.setInt(1, kod);
cs.setString(2, feltetel);
cs.execute();
CallableStatement cs = con.prepareCall("{? = call FgvNév(?)})";
cs.registerOutParameter(1, java.sql.Types.INTEGER);
cs.setString(2, feltetel);
cs.execute();
out = cs.getInt(1); B IT MAN
![Page 78: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/78.jpg)
B IT MAN117/78
A JDBC programozás lépései (7)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy CallableStatement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A CStatement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a CallableStatement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 79: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/79.jpg)
B IT MAN117/79
Bolt – Tárolt eljárás
KatNevMod nevű tárolt eljárás, mely módosítja egy
paraméterként megadott kódú kategória nevét.
create procedure KatNevMod (kk in char, kn varchar) asbeginupdate Kategoria set Nev= kn where kkod= kk;
end;
Run
beginKatNevMod("k01", "Élelmiszer");end;
![Page 80: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/80.jpg)
B IT MAN117/80
KatNevMod tárolt eljárás létrehozása
Abkezel_demo.java
public String TeMaker(){String sqlp = "create or replace procedure KatNevMod (kk char, kn char) as begin Update Kategoria set Nev= kn where kkod= kk; end;";String vm = "";try {
s = conn.createStatement();s.executeUpdate(sqlp);vm = "Kész a KatNevMod eljárás";
} catch(Exception e) {vm = "Gond: "+e.getMessage();}return vm;
}public static void main(String args[]){
Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();String vm = abk.TeMaker();System.out.println(vm);abk.LeKapcs();
}
(Kódrészlet!)
B IT MAN
![Page 81: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/81.jpg)
B IT MAN117/81
setXxx
ge
tCo
nn
ectio
nPreparedStatement
Connection
DriverManager
ResultSet
pre
pa
reS
tate
men
tStatement
extends extendsCallableStatement
exe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészeke
xe
cu
te
![Page 82: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/82.jpg)
B IT MAN117/82
CallableStatement (2) – KatNevMod hívása
Abkezel_demo.java
public String TeHiv(String kod, String nev){String sqlp = "{call KatNevMod(?, ?)}";String vm = "";try {
CallableStatement cs = conn.prepareCall(sqlp);cs.setString(1, kod);cs.setString(2, nev);cs.execute();cs.close();vm = "KatNevMod - Sikeres végrehajtás";
} catch(Exception e) {vm = "Gond: "+e.getMessage();}return vm;
}public static void main(String args[]){
Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();String vm = abk.TeHiv("k01", "Élelmiszer");System.out.println(vm);abk.LeKapcs();
}
(Kódrészlet!)
![Page 83: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/83.jpg)
B IT MAN117/83
Bolt – Tárolt függvény
Bevetel nevű tárolt függvény, mely megadott nap bevételét adja vissza.
create or replace function Bevetel (ip in varchar2) return int asbev int:=0;beginselect sum(Ar*Darab) into bev from Termek t inner join Vasarlas v
on t.Tkod=v.Tkod where to_char(idopont,'yyyy.mm.dd')=ip;return bev;
end;
Run
select Bevetel('2016.03.11') from dual;
![Page 84: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/84.jpg)
B IT MAN117/84
Bevetel tárolt függvény létrehozása
Abkezel_demo.java
public String TfMaker(){String sqlp = "create or replace function Bevetel (ip in varchar2) return int as bev int:=0; begin select sum(Ar*Darab) into bev from Termek t inner join Vasarlas v on t.Tkod=v.Tkod where to_char(idopont,'yyyy.mm.dd')=ip; return bev; end;";
String vm = "";try {
s = conn.createStatement();s.executeUpdate(sqlp);vm = "Kész a Bevetel függvény.";
} catch(Exception e) {vm = "Gond: "+e.getMessage();}return vm;
}public static void main(String args[]){
Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();String vm = abk.TfMaker();System.out.println(vm);abk.LeKapcs();
}
(Kódrészlet!)
![Page 85: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/85.jpg)
B IT MAN117/85
setXxx
ge
tCo
nn
ectio
nPreparedStatement
Connection
DriverManager
ResultSet
pre
pa
reS
tate
men
tStatement
extends extendsCallableStatement
exe
cu
teQ
ue
ry
DataType
JDBC osztályok/interfészek
![Page 86: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/86.jpg)
B IT MAN117/86
CallableStatement (3) – Bevetel hívásaAbkezel_demo.java
public String TfHiv(String datum){String sqlp = "{? = call Bevetel(?)}";String vm = "";try {
CallableStatement cs = conn.prepareCall(sqlp);cs.registerOutParameter(1, java.sql.Types.CHAR);cs.setString(2, datum);cs.execute();vm = cs.getString(1);cs.close();vm = "A "+datum+" napi bevétel: "+vm;
} catch(Exception e) {vm = "Bevétel gond: "+e.getMessage();}return vm;
}public static void main(String args[]){
Abkezel_demo abk = new Abkezel_demo();abk.DrReg();abk.Kapcs();String vm = abk.TfHiv("2016.03.11");System.out.println(vm);abk.LeKapcs();
}
(Kódrészlet!)
![Page 87: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/87.jpg)
B IT MAN117/87
CallableStatement (4)
CallableStatement cs = conn.prepareCall
( "{ call szabad_helyek( ?, ?, ? ) }" );
cs.setString(1, "MA-723");
cs.registerOutParameter(2, java.sql.Types.BOOLEAN);
cs.registerOutParameter(3, java.sql.Types.INTEGER);
cs.execute();
// eredmények feldolgozása, ha vannak
boolean dohányzó = cs.getBoolean(2);
int szabadHelyek = cs.getInt(3);
IN paraméter
OUT paraméter
OUT paraméter
OUT paraméterek
![Page 88: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/88.jpg)
B IT MAN117/88
CallableStatement (5)
CallableStatement cs = conn.prepareCall(
"{call updatePrices(?, ?)}");
cs.setString(1, "Colombian");
cs.setFloat(2, 8.49f);
cs.addBatch();
cs.setString(1, "Italian");
cs.setFloat(2, 9.49f);
cs.addBatch();
. . .
cs.executeBatch();
IN paraméterek,
batch végrehajtás
![Page 89: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/89.jpg)
B IT MAN117/89
CallableStatement (6)
CallableStatement cs = conn.prepareCall(
"{call getTestData(?, ?)}");
cs.registerOutParameter(1, java.sql.Types.TINYINT);
cs.registerOutParameter(2, java.sql.Types.DECIMAL);
ResultSet rs = cs.executeQuery();
// . . .
byte x = cs.getByte(1);
java.math.BigDecimal n = cs.getBigDecimal(2);
OUT paraméterek
![Page 90: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/90.jpg)
B IT MAN117/90
CallableStatement (7)
CallableStatement cs = conn.prepareCall("{call
reviseTotal(?)}");
cs.setByte(1, (byte)25);
cs.registerOutParameter(1, java.sql.Types.TINYINT);
cs.executeUpdate();
byte x = cs.getByte(1); INOUT paraméter!
![Page 91: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/91.jpg)
B IT MAN117/91
CallableStatement (8)
public void performFuncCall() {
CallableStatement cs = null;
double monthlySalary;
try {
cs = conn.prepareCall("{? = call
get_employee_salary(?)}");
cs.registerOutParameter(1,java.sql.Types.INTEGER);
cs.setString(2, "A101");
cs.execute();
monthlySalary = cs.getInt(1);
cs.close();
System.out.println("Monthly salary is
$"+monthlySalary+".\n");
} catch (SQLException e) { e.printStackTrace(); }
}
Függvény hívás IN paraméter!
![Page 92: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/92.jpg)
B IT MAN117/92
Témakörök
◼ Statement
◼ PreparedStatement
◼ JAVA «-» adatbázis-kezelés
◼ JDBC alapok
◼ CallabeStatement
◼ Tranzakció kezelés
![Page 93: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/93.jpg)
B IT MAN117/93
Tranzakció kezelés (1)
◼ Akkor lehet rá szükség ha több logikailag összefüggő
SQL utasítást szeretnénk együtt (egy blokkban,
közvetlenül egymás után) végrehajtani.
◼ Ezeknek az SQL utasításoknak általában van egy logikai
sorrendje. Ha bármelyik SQL utasítás meghiúsul, akkor a
logikailag ráépülő többi eljárást is vissza kell vonni.
◼ Példák:
– Több oldalas regisztráció, ahol minden oldalhoz
tartozó adat külön SQL utasítással bekerül az
adatbázisba. Ha az x. oldal után a felhasználó nyom
egy mégse gombot, akkor az eddig végrehajtott SQL
insert-eket is érvénytelenítenünk kell.
![Page 94: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/94.jpg)
B IT MAN117/94
Tranzakció kezelés (2)
– Banki műveletek – átutalás egy számláról egy másikra, vagy készpénzfelvétel az automatából: Először megterhelődik az egyik számla a kívánt összeggel, ezután jóváíródik a másik számlán, vagy kiadja az automata. Ha a második lépés meghiúsul (pl.: az automata technikai okok miatt nem tud pénzt kiadni) akkor az első műveletsort is vissza kell vonni.
◼ Ezekben az esetekben az SQL utasításokat egy tranzakcióban kezeljük. Ez a teljes tranzakció csak akkor hajtódik végre, ha mi erre a programunkból direkt felszólítjuk, egészen addig az adatbázis-kezelő elkülönítve kezeli őket. A tranzakció közben bármikor lehetőség van arra, hogy az addig kiadott SQL utasításokat érvénytelenítsük, ezzel az adatbázis visszaáll az eredeti állapotához.
![Page 95: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/95.jpg)
B IT MAN117/95
Tranzakció kezelés (3)
◼ A tranzakciók kezelésének módját a Connection object-
en a setAutoCommit() metódussal tudjuk megváltoztatni:
◼ connection.setAutoCommit(true): A JDBC
alapértelmezésként ezt a beállítást alkalmazza, vagyis
nem használ tranzakciókat. Ebben a módban minden
egyes kiadott SQL utasítás azonnal végrehajtódik, és
nem vonható vissza.
◼ connection.setAutoCommit(false): Ebben az
esetben (AutoCommit mód kikapcsolva), az SQL
utasítások tranzakciókba (csoportokba) rendezhetők, és
csak akkor hajtódnak végre vagy vonódnak vissza, ha a
connection-ön meghívjuk a commit() vagy rollback()
metódusokat.
![Page 96: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/96.jpg)
B IT MAN117/96
Tranzakció kezelés (4)
◼ A commit() hatására a tranzakció utasításai
véglegesen bekerülnek az adatbázisba, míg
◼ a rollback() visszaállítja az adatbázist a tranzakció
megkezdése előtti állapotába.
◼ SavePoint: egy köztes pontot jelöl meg egy tranzakción
belül és lehetővé teszi, hogy egy tranzakció
visszagördüljön addig a pontig ahelyett, hogy a teljes
tranzakció visszagördüljön.◼ Savepoint sp1 = connection.setSavepoint("sp1");
◼ connection.rollback(sp1);
![Page 97: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/97.jpg)
B IT MAN117/97
Tranzakció kezelés (5)
◼ Egy tranzakcióhoz több Savepoint-ot rendelhetünk.
◼ Ezek automatikusan törlődnek commit vagy teljes
rollback esetében.
◼ Ha egy bizonyos Savepoint-ig gördítünk vissza, az utána
definiált Savepoint-ok törlődnek.
◼ Expliciten is törölhetünk Savepoint-ot:
conn.releaseSavepoint(sp1);
◼ Ha egy automatikusan vagy expliciten törölt Savepoint-ra
hivatkozunk, SQLException kivétel dobódik.
![Page 98: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/98.jpg)
B IT MAN117/98
A JDBC programozás lépései (8)
1. Regisztráljuk a Driver-t a DriverManager-ben.
2. Létrehozunk egy adatbázis kapcsolatot: a
DriverManager-től kérünk egy Connection-t
3. Tranzakció kezdete
4. A Connection-ben létrehozunk egy Statement-et
(beállítjuk a kapcsolatot egy SQL parancs kiadására)
5. A Statement-hez hozzákapcsolunk egy SQL parancsot
6. Ha szükséges, megadjuk az SQL parancs paramétereit
7. Végrehajtjuk a Statement-et
8. Feldolgozzuk az eredményhalmazt
9. Tranzakció vége
10. Felszabadítjuk az erőforrásokat
![Page 99: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/99.jpg)
B IT MAN117/99
Tranzakciók (2)
Connection connection = DriverManager.getConnection(url, username, passwd);
connection.setAutoCommit(false);
try {
statement.executeUpdate(...);
statement.executeUpdate(...);
connection.commit();
} catch (Exception e) {
try {
connection.rollback();
} catch (SQLException sqle) {// Hiba esetén
}
} finally {
try {
connection.close();
} catch (SQLException sqle) { }
}
![Page 100: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/100.jpg)
B IT MAN117/100
Tranzakció izolációs szintek (1)
◼ Azt határozzák meg, hogy hogyan kezelje a szerver az egyidejű hozzáférési kérelmeket (read, update, insert) ugyanahhoz az objektumhoz (tábla, rekord, …).
1. TRANSACTION_NONE: A tranzakciók nem támogatottak, nincs tranzakció kezelés.
2. TRANSACTION_READ_UNCOMMITED: Olvasáskor mindig az aktuális (módosított) értéket kapjuk, még akkor is, ha az adott insert/update tranzakciót a kezdeményező nem commit-olta. A következő problémák léphetnek fel:
– Dirty reads: A kiolvasott rekord értéke változhat más tranzakciók által a mi tranzakciónk ideje alatt. Tehát előfordulhat, hogy a tranzakciónk elején és végén az adott rekordban más értékek szerepelnek, holott mi nem is változtattuk, csak olvastuk…
![Page 101: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/101.jpg)
B IT MAN117/101
Tranzakció izolációs szintek (2)
– Non-repeatable reads: A tábla egy adott sora
törlődhet a mi tranzakciónk közben. Így amikor mi a
tranzakciónk elején és végén futtatunk egy-egy
select-et, akkor a második esetben hiányozhatnak
sorok az eredményből.
– Phantom reads: Hasonló az előzőhöz, csak insert-
tel. A táblába új sor (fantom sor) kerülhet egy másik
tranzakció által miközben a mi tranzakciónk még fut.
Így a tranzakciónk végén több sor lesz az adott
táblában, mint amivel számolhattunk az elején…
![Page 102: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/102.jpg)
B IT MAN117/102
Anomáliák (1)
◼ Konfliktusban álló műveletek keveredése:
– Két írás egymás után – lost update
– Olvasás két írás között – dirty read
– Írás két olvasás között – non repeatable read
– Írás két olvasás között – phantom read
w1(x) w1(x)
w1(x) w2(x)
r2(x)
r1(x) w2(x) r1(x)
r1(x) w2(x) r1(x)
![Page 103: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/103.jpg)
B IT MAN117/103
Anomáliák (2)
◼ Lost update
◼ Elveszett frissítés
w1(x) w2(x)
READ(A)2.
READ(A)3.
A:= A + 30
4. A:= A + 20
5.
6.
WRITE(A)7.
BEGIN1.
END8.
WRITE(A)
A=50
A=50
A=70
A=80
A=70
A=80
A≠100
![Page 104: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/104.jpg)
B IT MAN117/104
Anomáliák (3)
◼ Dirty read
◼ Piszkos olvasás
(ideiglenes frissítés) READ(A)2.
READ(A)
3.
4.
A:= A + 20
5.
6.
WRITE(A)7.
BEGIN1.
END8.
WRITE(A)
A=50
A=70
A=70
A=70
A=50
A=50
w1(x) w1(x)r2(x)
ROLLBACK(A)
A≠70
![Page 105: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/105.jpg)
B IT MAN117/105
Anomáliák (4)
◼ Non repeatable read
◼ Nem megismételhető
olvasásREAD(A)2.
DELETE(A)
3.
4.
5.
6.
BEGIN1.
END
A=30
B=20
A=0
A=50 SELECT(A+B)
A≠20
r1(x) w2(x) r1(x)READ(B)
![Page 106: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/106.jpg)
B IT MAN117/106
Anomáliák (5)
◼ Phantom read
◼ Fantom olvasás
SUM(WHERE)2.
INSERT(WHERE)3.
4.
5.
BEGIN1.
S=300
I=20
S=320
S≠S
r1(x) w2(x) r1(x)SUM(WHERE)
BEGIN
END
SUM(WHERE)
BEGIN
SUM(WHERE)
![Page 107: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/107.jpg)
B IT MAN117/107
Tranzakció izolációs szintek (3)
3. TRANSACTION_READ_COMMITED: Olvasáskor mindig
az adott rekord véglegesített értéket kapjuk. Ez az
esetek 99%-ra használható, a tranzakcióink mindig
csak olyan rekordokat olvasnak, amik véglegesítve
vannak, azaz nincs nyitott tranzakció, ami dolgozna
rajtuk. A baj ezzel az, hogy ha sokan írják és olvassák
az adott rekordot vagy táblát akkor könnyen kialakulhat
az a helyzet, hogy az olvasó tranzakciók arra várnak
hogy az írás (pl egy nagy tábla update-je) befejeződjön.
Ez a főleg a rekordokra vonatkozik így csak a dirty
read-től véd, probléma lehet:
– a non-repeatable reads,
– és a phantom reads.
![Page 108: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/108.jpg)
B IT MAN117/108
Tranzakció izolációs szintek (4)
4. TRANSACTION_REPEATABLE_READ: Ez annyival jobb
a READ_COMMITTED-nél, hogy már a non-repeatable
read hibát is képes kiszűrni a tranzakcióból.
Egyszerűbben: csak a rekordok véglegesített értékeit
használja, és a rekordok tranzakció közbeni törlése
nem befolyásolja a select-eket. Ebben az esetben csak
egy probléma marad:
– a phantom reads
![Page 109: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/109.jpg)
B IT MAN117/109
Tranzakció izolációs szintek (5)
5. TRANSACTION_SERIALIZABLE: Annyival több a
REPEATABLE_READ-től, hogy más tranzakció nem
írhatja felül a mi tranzakciónk által olvasott értékeket,
azaz addig várakoztatja azokat míg be nem fejeződik a
tranzakciónk. Így nem fognak tranzakció közben fantom
sorok keletkezni a táblában. Itt elég problémás lehet, ha
több résztvevő folyamatosan olvas egy táblát, amíg az
updatelő szál várakozik, mert a tábla lock-olva van és
nem tud bele írni…
![Page 110: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/110.jpg)
B IT MAN117/110
Tranzakció izolációs szintek (6)
◼ Ezek szintek föntről lefelé egyre költségesebbek
lesznek az adatbázisnak, így a tranzakciók végrehajtási
sebessége lassul.
◼ Az izolációs szinteket a Connection objektumon a setTransactionIsolation() metódussal állíthatjuk
be a tranzakció megkezdése előtt. Például:
◼ connection.setTransactionIsolation(
Connection.TRANSACTION_REPEATABLE_READ);
![Page 111: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/111.jpg)
B IT MAN117/111
Órai feladatok 1.
◼ Készítsen egy JDBC alkalmazást, mely alkalmas a következőkre:
◼ Használja a Termek táblát!
1. Készítsen egy Java metódust, mely kilistázza a képernyőre a tábla
adatait. A metódus neve legyen TermekLista.
2. Készítsen egy Java metódust, mely beszúr egy beolvasott
paraméterekkel megadott rekordot. A metódus neve legyen Beszur.
3. Készítsen egy Java metódust, mely kétlépcsős technikával
(prepareStatement) legalább 3 db, valamilyen adatszerkezetben
tárolt rekordot szúr be. Az eljárás írja ki a beszúrt rekordok számát. A
metódus neve legyen Beszur_2.
4. Készítsen egy Java metódust, mely módosítja egy adott Tkod-ú
rekord Ár mezőjében lévő értékét (egy megadott értékre). A metódus
neve legyen Modosit.
5. Készítsen menüt a programhoz, mely a TermekLista, a Beszur a
Modosit és a Kilépés funkciókat kezeli.
![Page 112: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/112.jpg)
B IT MAN117/112
Órai feladatok 2.
◼ Készítsen egy JDBC alkalmazást, mely alkalmas a következőkre:
◼ Használja a Termek táblát!
1. Készítsen egy Java metódust, melyben létrehoz egy tárolt
függvényt. A függvény adja vissza egy megadható kategóriájú
termék darabszámát a Termék táblából.
2. Készítsen egy Java metódust, mely lefuttatja az 1. feladatban
létrehozott tárolt függvényt, és az eredményt kiírja a képernyőre.
3. Készítsen egy Java metódust, melyben létrehoz egy tárolt eljárást.
Az eljárás módosítsa egy megadható kódú termék nevét (egy
szintén megadható értékre) a Termék táblában.
4. Készítsen egy Java metódust, mely lefuttatja a 3. feladatban
létrehozott tárolt eljárást, ezután visszaolvassa az adatbázisból, és
kiírja a képernyőre az adott termék tényleges (módosítás utáni)
nevét.
![Page 113: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/113.jpg)
B IT MAN117/113
Órai feladatok 3.
◼ Készítsen egy egyetlen osztályból álló JAVA programot, mely a main metódusban kapcsolódik az Oracle szerverhez.
◼ Készítse el, és futtassa le az alábbi metódusokat:
1. Készítsen egy Java metódust, mely létrehoz egy táblát az Oracle szerveren. A táblában legyen egy KÓD mező, mely legyen numerikus, és legyen elsődleges kulcs. Legyen a táblában egy NÉV mező, és egy NUMERIKUS adatmező, melyben 10000-es nagyságrendű, két tizedes pontosságú adatokat kell tárolni.
A tábla sémája [ Kod, Nev, Num_adat ]
2. Készítsen egy Java metódust, mely beszúr egy billentyűzetről beolvasott paraméterekkel megadott rekordot.
3. Készítsen egy Java metódust, mely kétlépcsős technikával legalább 3, valamilyen adatszerkezetben tárolt kódú rekord numerikus értékét módosítja egy megkapott értékkel. Az eljárás írja ki a ténylegesen módosított rekordok számát.
![Page 114: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/114.jpg)
B IT MAN117/114
Órai feladatok 3.
4. Készítsen egy Java metódust, mely kilistázza a képernyőre a tábla adatait.
5. Készítsen egy Java metódust, melyben megadható egy kereső kifejezés, és az ennek megfelelő nevű emberek adatait kilistázza a képernyőre.
6. Készítsen egy Java metódust, melyben a numerikus értékre lehet keresni. Legyen megadható a reláció (<, =, >) és a szám konstans. A metódus írja ki a megfelelő emberek adatait a képernyőre.
7. Készítsen egy Java metódust, melyben a kódra lehet keresni. Lehessen adott értéktől kisebb, két érték közötti, és adott értéktől nagyobb kódra keresni. A metódus írja ki a megfelelő kódú emberek adatait a képernyőre.
8. Készítsen egy Java metódust, mely kiírja a képernyőre a rekordok számát.
9. Készítsen egy Java metódust, mely kiírja a képernyőre a legkisebb, a legnagyobb, az átlagos és az összesített numerikus értéket.
![Page 115: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/115.jpg)
B IT MAN117/115
![Page 116: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/116.jpg)
B IT MAN117/116
Felhasznált irodalom
◼ Kovács László: Adatbázis rendszerek 2.,
elektronikus jegyzet
◼ Barabás Péter: Adatbázis rendszerek 2.,
elektronikus jegyzet
◼ Kozsik Tamás: JDBC, elektronikus jegyzet
◼ http://www.cs.ubbcluj.ro/~bittologatok/ - JDBC
adatbázis-hozzáférés java-ban, elektronikus
jegyzet
![Page 117: 8. Oracle JDBC - users.iit.uni-miskolc.huusers.iit.uni-miskolc.hu/~szucs/ab2/oa/1508_Oracle_JDBC.pdf · A Java objektum-orientált, az adatbázisok többnyire még nem azok. Az adatbázis](https://reader036.vdocuments.site/reader036/viewer/2022070618/5e159e77fe413812fe7b192f/html5/thumbnails/117.jpg)
B IT MAN117/117
VÉGEVÉGE