10. ea: jdbc - users.iit.uni-miskolc.huszucs/jprog/oa/17_ea_09_jdbc_tm.pdf · a java...
TRANSCRIPT
B IT MAN62/1 v: 2018.02.05B IT MAN
10. Ea: JDBC
Java Programozás
SQLite alapokon
B IT MAN62/2
SQLite
Az SQLite önálló, fájl alapú, kisméretű, C forrású
programkönyvtárként megvalósított ACID-kompatibilis relációs
adatbázis-kezelő rendszer, illetve adatbázismotor.
A szoftvert D. Richard Hipp tervezte és alkotta meg.
Az SQLite forráskódja nyílt, közkincsnek számít.
Egyre több népszerű szoftver használja:
– Mozilla Firefox
– Adobe Reader, Acrobat, Photoshop
– Airbus
– Apple
– Microsoft
– PHP
B IT MAN62/3
SQLite
Jellemzők:
– Az SQLite megvalósítja az SQL-92 szabvány nagy részét,
így pl. részlegesen támogatja a triggereket és a legtöbb
komplex / összetett lekérdezést
– Nincs benne a hagyományos SQL rendszerekben
megszokott szigorú mezőtípus-kezelés, csak gyengén
típusos, a mezőknek típus helyett affinitásuk (preferált
típus) van. Pl:
• String típusú adat beilleszthető integer affinitású oszlopba;
ha az SQLite sikeresen tudja konvertálni integerré, akkor úgy
tárolja, egyébként meghagyja az adat eredeti típusát!
– Kis erőforrás igényű (1 MB alatti méretű az adatbázis motor)
– Több szálon futtatható, több felhasználós rendszer
– Sok programnyelvből elérhető:
• BASIC, C, C++, Java, C#, Visual Basic, PHP, Ruby, Python…
B IT MAN62/4
SQLite
Letöltése:
B IT MAN62/5
SQLite
JDBC driver letöltése:
B IT MAN62/6
SQLite
Telepítés:
– Hozzunk létre egy könyvtárat az adatbázis kezelő
számára, és csomagoljuk ki oda a dll-t és a tools-t. Kész!
– Lépjünk be a Java munkakönyvtárunkba, és csomagoljuk
ki oda a jdbc drivert. Kész!
B IT MAN62/7
SQLite
Kipróbálás:
– Indítsuk el a Parancssort
– Lépjünk át az adatbázis könyvtárába.
– Indítsuk el az adatbázist: sqlite3
– Írassuk ki a rendszerdátumot:
• select date('now');
– Működik!
– Help: .help
– Kilépés: .quit
B IT MAN62/8
SQLite
Adatbázis létrehozása
– Ha csak elindítjuk a szervert, akkor az csak a memóriában
kezeli az adatokat.
– Ahhoz, hogy az adatok megmaradjanak, létre kell hozni
egy adatbázist.
– A létrehozott adatbázisfájl a munkakönyvtárba kerül, neve
az lesz, amit megadtunk (lehet tetszőleges a
kiterjesztése!)
– Adjuk ki a .open empdb.db parancsot, így létrejön az
empdb.db adatbázis.
– Ha nem kapunk hibaüzenetet, a parancs rendben lefutott!
B IT MAN62/9
SQLite
Tábla létrehozása
– Megnyitni egy adatbázis a .open név paranccsal lehet
– A létrehozott / megnyitott adatbázisban gépeljük be a
következő parancsot:
– Több sorba beírt parancsnál a …> jelzi, hogy a parancs
még nem fejeződött be.
– A parancs végét a ; jelzi az értelmezőnek
– A beírt parancs végén ENTER
– Ha nem kapunk hibaüzenetet, a parancs rendben lefutott!
create table emp(kod integer primary key,nev text,szulido date,lakohely text,iq integer);
B IT MAN62/10
SQLite
Adatbevitel
– Írjuk be a következő parancsokat:
Írassuk ki az adatainkat:
– select * from emp;
Kész! Jöhet a távoli adatelérés JDBC-vel!
insert into emp values(31,"Jég Elek","1985.05.06","Miskolc",112);insert into emp values(32,"Rossz Géza","1981.11.09","Miskolc",105);insert into emp values(33,"Keksz Zoé","1993.02.13","Eger",125);
B IT MAN62/11
B IT MAN62/12
A cél:
Javás kliensről manipulálni az adatbázist.
B IT MAN62/13
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.
B IT MAN62/14
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.
B IT MAN62/15
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.
B IT MAN62/16
A megoldás (1.)
Kétrétegű megoldás
Szerver-oldal
SQL
Kliens-oldal
Piros, Kék, ZöldDriver
B IT MAN62/17
A megoldás (2.)
Háromrétegű megoldás
Szerver-oldal
Alkalmazás
SQL
DB
Kliens-oldal
Piros, Kék, Zöld
Driver
B IT MAN62/18
Az adatbázis-programozás lépései
Driver regisztrálása
Kapcsolódás a DBMS-hezKapcsoló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
Kapcsolat lezárása
B IT MAN62/19
JDBC alapok
Kliens számítógépSQLite
SQLite
B IT MAN62/20
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
Class
Interface
B IT MAN62/21
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
1.
2.
B IT MAN62/22
A Driver (meghajtó) betöltése (1)
Feltétel: a Java keresési útvonalán elérhető legyen a
fizikai driver.
– SQLite-hoz: sqlite-jdbc-3.21.0.jar
– Kialakítása:
1. Másoljuk be a drivert a Java munkakönyvtárba
(megtörtént)
2. Készítsünk a könyvtárba egy ini.bat nevű fájlt, tartalma:
3. Ha beléptünk a könyvtárba, indítsuk el a fájlt: ini
B IT MAN62/23
A driver regisztrálása
Ha a driver elérhető a keresési útvonalon, regisztrálható Javaban:
import java.sql.*;
public void Reg(){
try {
Class.forName("org.sqlite.JDBC");
} catch (ClassNotFoundException e) {
System.out.println("Hibás driver regisztráció!"+e.getMessage());
}
}
Ha nem regisztráljuk a drivert, a DriverManager kapcsolódáskor megpróbálja
megkeresni a drivert. A keresési útvonalat végignézi, és ha van a kérésnek
megfelelő driver, akkor azon keresztül teremt kapcsolatot!
1.
B IT MAN62/24
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.)
B IT MAN62/25
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
B IT MAN62/26
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
B IT MAN62/27
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 pl. az Oracle oci driverek.
Natívprogramkönyvtár
Type 2
B IT MAN62/28
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
B IT MAN62/29
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 SQLite driver.
Type 4
B IT MAN62/30
Kapcsolat létrehozása
public void Connect() {
try {
String url = "jdbc:sqlite:C:/sqlite3/empdb.db";
conn = DriverManager.getConnection(url);
System.out.println("Connection OK!");
} catch (SQLException e) {
System.out.println("JDBC Connect: "+e.getMessage(), 0);
}
}
A DriverManager-től kérünk egy Connection-t (kapcsolatot), és ezen a
kapcsolaton keresztül kezeljük ezután az adatbázis adatait.
Az url függ a driver és az adatbázis típusától, az adatbázis helyétől, más
adatbázisok esetén tartalmazza a user nevét és jelszavát is.
import java.sql.*;private static Connection conn = null;
2.
B IT MAN62/31
Az adatbázis-programozás lépései
Lekapcsolódás
Eredmények
feldolgozása
SQL kérés (Statement) vagy
(PreparedStatement) összeállítása
SQL kérés elküldése
Kapcsolódás
Lekérdezés3.
4.
B IT MAN62/32
Munka az adatbázisban
Amint a kapcsolat létrejött, az adatbázisnak küldhetünk SQL
parancsokat.
A JDBC API nem korlátoz a kiadható SQL parancsok
tekintetében: azaz adatbázis-specifikus, de 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 ez
esetben a kód kivételt fog kiváltani.
A munkavégzést három kategóriába sorolhatjuk:
– Egyszer kiadandó parancsok
– Ismétlődő (paraméterezhető) parancsok
– Lekérdezések, melyeknek visszatérő adathalmaz az eredménye
B IT MAN62/33
Munka az adatbázisban
Egyszer kiadandó parancsok
– Statikus parancsok, melyeket nem lehet ciklikusan egymás
után többször végrehajtani
– Pl: Insert, Update, Delete, Create, Drop, Alter
– Lehet paraméterük, de a paraméterekkel összeépített
parancs egy statikus parancsként kerül végrehajtásra
– Küldésére a Statement interfész használható
• A Statement egy paraméter nélküli SQL parancs fogadására
kéri fel adatbázist
– Végrehajtására az alábbi metódusok használhatók:
• execute("sqlp");
• executeUpdate("sqlp");
B IT MAN62/34
Statement létrehozása, végrehajtása
public void insert(int k, String n, String d, String l, int i){
String sqlp = "insert into emp values("+k+", '"+n+
"', '"+d+"', '"+l+"', "+i+")";
System.out.println(sqlp);
try {
s = conn.createStatement();
s.execute(sqlp);
System.out.println("insert OK!");
} catch (SQLException e) {
System.out.println("JDBC insert: "+e.getMessage());
}
}
3.
insert(35,"Bőr Önd","1980.01.01","Miskolc",66);
4.
B IT MAN62/35
Munka az adatbázisban
Ismétlődő (paraméterezhető) parancsok
– Dinamikus parancsok, melyeket lehet ciklikusan egymás
után többször végrehajtani
– Átküldjük az adatbázisnak a parancs szerkezetét, melyben
?-ek jelzik a változó paramétereket, ezután ciklusban
beállítjuk a paraméterek értékét, és végrehajtjuk a
parancsot
– Küldésére a PreparedStatement interfész használható
• Mely egy paraméteres SQL parancs fogadására kéri fel
adatbázist
– Végrehajtására az alábbi metódusok használhatók:
• execute("sqlp");
• executeUpdate("sqlp");
B IT MAN62/36
PreparedStatement létrehozása, végrehajtásapublic void insertAll(Emp[] t) {
String sqlp = "insert into emp(kod,nev,szulido,lakohely,iq)
values(?,?,?,?,?)";
String date="";
try {
pstmt = conn.prepareStatement(sqlp);
for (int i = 0; i < t.length; i++) {
pstmt.setInt(1, t[i].getKod());
pstmt.setString(2, t[i].getNev());
date = sdf.format(t[i].getSzulido());
pstmt.setString(3, date);
pstmt.setString(4, t[i].getLakohely());
pstmt.setInt(5, t[i].getIq());
pstmt.execute();
}
System.out.println("Adatok kiírva!");
} catch (SQLException e) {System.out.println(e.getMessage());}
}
3.
4.
public class Emp {private int kod;private String nev;private Date szulido;private String lakohely;private int iq;
B IT MAN62/37
Az adatbázis-programozás lépései
Lekapcsolódás
Kapcsolódás
Az eredményhalmaz (CURSOR)
visszakérése: ResultSet
A ResultSet rekordonkénti
bejárása, az értékek átadása
programváltozóknak
Lekérdezés
Eredmények
feldolgozása
5.
6.
B IT MAN62/38
Munka az adatbázisban
Lekérdezések
– Adatokat adnak vissza
– A visszaadott adatszerkezet SQL neve: CURSOR
– A visszaadott adatszerkezet Java neve: ResultSet
– A parancskiadás interfésze általában Statement
• Lehet PreparedStatement is
– A végrehajtás metódusa: executeQuery("sqlp");
– Az adatokat a getResultSet() metódussal kérjük vissza,
és egy ResultSet-ben kapjuk vissza.
– Ciklussal bejárjuk a ResultSet-et, átadjuk az értékeket
program változóknak, és feldolgozzuk azokat.
– Végül lezárjuk a ResultSet-et.
B IT MAN62/39
ResultSet használatapublic void selectAll(){
String nev="", szid="", lak=""; int kod=0, iq=0;
String sqlp= "select * from emp";
try {
s = conn.createStatement();
rs = s.executeQuery(sqlp);
while(rs.next()) {
kod = rs.getInt("kod");
nev = rs.getString("nev");
szid = rs.getString("szulido");
lak = rs.getString("lakohely");
iq = rs.getInt("iq");
System.out.println(""+kod+": "+nev+": "+szid+": "+lak+": "+iq);
}
rs.close();
System.out.println("selectAll completed!");
} catch (SQLException e) {System.out.printlne.getMessage());}
}
5.
6.
B IT MAN62/40
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
7.
8.
9.
B IT MAN62/41
Erőforrások felszabadítása
ResultSet lezárása: rs.close();
Statement lezárása: stmt.close();
PreparedStatement lezárása: pstmt.close();
Kapcsolat lezárása:
public void disConnect(){
try {
conn.close();
} catch (SQLException e) {System.out.println(e.getMessage());}
}
7.
8.
9.
B IT MAN62/42
A main program
import java.sql.*;
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
public class Main {
private static SimpleDateFormat sdf =
new SimpleDateFormat("yyyy.MM.dd");
private static Connection conn = null;
private static Statement s = null;
private static ResultSet rs = null;
private static PreparedStatement pstmt = null;
public static void main(String[] args) {
Emp[] emp = new Emp[3];
B IT MAN62/43
A main program
emp[0] = new Emp(36,"Kis Ábel",StoD("1985.01.31"),"Ózd",97);
emp[1] = new Emp(37,"Kis Erwin",StoD("1992.07.14"),"Eger",116);
emp[2] = new Emp(38,"Kis Farkas",StoD("1987.12.06"),"Miskolc",125);
Connect();
insert(35,"Bőr Önd","1980.01.01","Miskolc",66);
insertAll(emp);
selectAll();
disConnect();
}
public static Date StoD(String s){Date testDate = null, vid = null;try {testDate = sdf.parse(s);} catch (ParseException e){return vid;}if (!sdf.format(testDate).equals(s)){return vid;}return testDate;
}}
B IT MAN62/44
Munka az adatbázisban
JDBC interfészek 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ásokhoz (az SQLite nem
támogatja, sem a hívást, sem a tárolt eljárásokat!)
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
B IT MAN62/45
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
B IT MAN62/46
B IT MAN62/47
Teszt 1.
Hány féle JDBC driver típus létezik?
1
2
3
4
5
Rengeteg, hiszen nagyon sok féle adatbázis létezik
B IT MAN62/48
Teszt 2.
Melyik interfész nem létezik JDBC-ben?
Statement
PrepareStatement
PreparedStetament
CallableStatement
B IT MAN62/49
Teszt 3.
Mi az azonosító stringje as SQLite jdbc driver-nek?
org.sqlite.JDBC
JDBC:sqlite
JDBC:sqlite.org
sqlite.JDBC
B IT MAN62/50
Teszt 4.
Melyik kódsor helyes?
ResultSet rs = stmt.selectQuery("select * from …");
ResultSet rs = stmt.executeSelect ("select * from …");
ResultSet rs = stmt.runQuery ("select * from …");
ResultSet rs = stmt.executeQuery ("select * from …")
B IT MAN62/51
Teszt 5.
STATEMENT
CONNECTION
RESULTSET
DRIVER
SQL parancs
Milyen sorrendben követik egymást a kifejezések?
Kezdje a számozást a kódban a legkorábban előforduló
kifejezéssel!
1
2
3
4
5
B IT MAN62/52
Teszt 6.
Egészítse ki a kódot!
public ?1???? LeKapcs(){if (conn ?2????) {try {
conn.?3????;d.printf("Sikeres lekapcsolódás");
} ?4????(Exception ?5????) {System.err.println(ex.getMessage());
}}
}
1. __________________________________
2. __________________________________
3. __________________________________
4. __________________________________
5. __________________________________
B IT MAN62/53
Teszt 7.
Melyik metódussal lehet végrehajtani egy SQL select
parancsot?
execute()
executeQuery()
executeUpdate()
ExecuteCommand()
B IT MAN62/54
Teszt 8.
A prepareStatement() metódus egy SQL kifejezést küld az
adatbázisnak.
Mi a visszatérő adat (válasz) típusa?
ResultSet
Integer típusú szám
prepareStatement objektum
PreparedStatement objektum
B IT MAN62/55
Teszt 9.
Melyik kód helyes?
String sql="select * from melos";
Statement st=conn.createStatement(sql);
ResultSet rs=st.executeQuery()
String sql="select * from melos";
Statement st=conn.createStatement();
ResultSet rs=st.executeQuery(sql);
String sql="select * from melos";
Statement st=createStatement(sql);
ResultSet rs=conn.executeQuery(st);
B IT MAN62/56
Teszt 10.
Javítsa ki a kódban a hibákat!
public void Select(){String sqlp = "select id,nev from melos";String nev="", id="";try {s = createStatement();s.executeUpdate(sql);s = rs.getResultSet();while(rs.notEmpty()) {
id = s.getNumber("mid");nev = s.getString("Név");d.printf(id+"-"+nev);
}conn.close(); rs.close();
} cath(Exception e) d.printf(e.getError());}
1. ___________
2. ___________
3. ___________
4. ___________
5. ___________
6. ___________
7. ___________
8. ___________
9. ___________
10. ___________
B IT MAN62/57
Teszt 11.
Az ábrán egy JDBC lekérdezés vázlata látható!
Adja meg a hiányzó kifejezéseket!
1. _______________
2. _______________
3. _______________
B IT MAN62/58
Teszt 12.
Melyik csomagot kell importálni ahhoz, hogy JDBC-ben
dolgozni tudjunk?
java.sql.*;
java.sqlx.*;
java.jdbc.sql.*;
java.jdbc.*;
Az A és a B csomag is szükséges.
B IT MAN62/59
Teszt 13.
Egy ResutSet-ből a getRow() utasítással egy teljes sornyi
adatot ki lehet olvasni egyszerre.
Az állítás igaz.
Az állítás hamis
Igaz vagy hamis?
A PreparedStatement a Statement leszármazottja..
Az állítás igaz.
Az állítás hamis
B IT MAN62/60
Teszt 14.
A JDBC egy API különböző típusú adatbázisok elérésére
A JDBC jelentése: Java DataBase Connectivity
JDBC-vel objektum orientált adatbázisok is elérhetők
A JDBC az ODBC java megvalósítása
Adatbázisok elérését teszi lehetővé java nyelven
A Jdbc egy java osztály neve, erről kapta a technológia a
nevét
A JDBC támogatja a kapcsolat nélküli adatkezelést
Melyik állítás helyes a JDBC-vel kapcsolatban?
B IT MAN62/61
Teszt 15.
Az ábrán egy JDBC lekérdezés vázlata látható!
Adja meg a hiányzó kifejezéseket!
1. _______________
2. _______________
3. _______________
B IT MAN62/62
VÉGEVÉGE