JDBC : Interconnexion
J/SQL
J
ava
/
SQL
Ch i i S
Ch
r
i
st
i
an
S
outou
http://w3.univ-tlse2.fr/icare/soutou
JDBC
Bibliothèques de classes (java.sql.* inclus dans
le JDK 1 4 : JDBC 3 0)
le
JDK
1
.
4
:
JDBC
3
.
0)
JDBC supporte le multi-thread
Support de SQL92 Entry Level
D
ri ers
D
ri
v
ers
http://java.sun.com/products/jdbc/jdbc.drivers.html
Christian Soutou - 2005 2
JDBC
Communication en mode client
-
serveur
Communication
en
mode
client
serveur
déconnecté :
connexion à la base de données
émissions d’instructions SQL et exploitation des
résultats provenant de la base de données
déconnexion de la base
Applicatif Java
Classe
Applet côté client ou Servlet,
–EJB (Enterprise Java Beans)
Procédure cataloguée côté serveur
Christian Soutou - 2005 3
Types de Pilotes JDBC
Type 1 (
ODBC Bridge
)
Java
Type
1
(
-
ODBC
Bridge
)
Client épais JDBC
ODBC
ODBC + Pilote ODBC du SGBD
Utilisation
Utilisation
Application Java mais pas Applet
è
ODBC
•Test, 1
è
re implantation de JDBC
Base MS Access
ODBC
BD
Christian Soutou - 2005 4
Types de Pilotes JDBC
Type 2 (
Native
API Partly
Java Driver
)
Java
JDBC
Type
2
(
Native
-
API
Partly
-
Java
Driver
)
Client épais DriverBD
Pilote JDBC du SGBD
Librairies client du SGBD
Librairies
client
du
SGBD
Utilisation DriverBD
Mieux que t
y
pe 1 : code optimisé
Applications Java 2 tiers mais pas applet BD
Christian Soutou - 2005 5
Types de Pilotes JDBC
Type 3 (
Net Protocol All
Java Driver
)
Java
Driver
Type
3
(
Net
Protocol
All
-
Java
Driver
)
Client léger
Java
100%
Pilote JDBC + Driver générique
Utilisation
DriverG java/natif
Utilisation
• Multibases Driver
Oracle
DriverBD
Application Java ou Applets
Architectures 3 tiers Driver
Oracle
...
BD
Christian Soutou - 2005 6
Types de Pilotes JDBC
Type 4 (
Native Protocol All
Java Driver
)
Type
4
(
Native
Protocol
All
-
Java
Driver
)
Client léger Java
Pilote JDBC (300Ko pour Oracle thin)
Création de sockets pour émuler le protocole BD
Driver
100% Java
Création
de
sockets
pour
émuler
le
protocole
BD
Utilisation
• Applets
Architectures 2 tiers BD
Christian Soutou - 2005 7
L’API JDBC (java.sql)
Interface Classes Exceptions
Description
Interface
-
Classes
-
Exceptions
Description
Driver Pilote appelé par le Driver Manager
Connection
Session avec une BD
Connection
Session
avec
une
BD
Statement Exécution d’ordres SQL standard
PreparedStatement
Gestion des ordres SQL avec paramètres
PreparedStatement
Gestion
des
ordres
SQL
avec
paramètres
CallableStatement Gestion des appels de procédures stockées
ResultSet Tableau de li
g
nes résultant d’un ordre
g
DriverManager Envoie les demandes de connexion au driver
SQLException Extension de java.lang.Exception, détail de l’erreur SQL
Christian Soutou - 2005 8
Variables d’environnement
PATH
:
chemin de la machine virtuelle Java
(
en général
PATH
:
chemin
de
la
machine
virtuelle
Java
(
en
général
installé dans C:\j2sdk1.4.0)
CLASSPATH : paquetage Oracle en fonction du pilote
hii(
OlH
\
jdb
\
lib
\
t
)
c
h
o
i
s
i
(
O
rac
l
e
H
ome
\
jdb
c
\
lib
\
paque
t
age
)
Version du JDK utilisé Paquetage JDBC Oracle
JDK 1 1
l 111 j
JDK
1
.
1
c
l
asses
111
.
j
ar
JDK 1.2 et JDK 1.3 classes12.jar
JDK 1 4
jdb 14 j
JDK
1
.
4
o
jdb
c
14
.
j
ar
Christian Soutou - 2005 9
Mécanismes de JDBC
Statement
SELECT, INSERT…
Données (NUMBER VARCHAR2...)
Preparedstatement
B
Java
Connection Statement
B
ase
JDBC
Importation de paquetages (oracle.sql, …)
Enregistrement du pilote
Ouverture de connexion(s) (Connection)
Création d’un état (Statement, PreparedStatement ou
CallableStatement
)
CallableStatement
)
Gestion de ResultSet
Fermeture des résultats, des états et connexions
Christian Soutou - 2005 10
Eit tdilt1
E
nreg
i
s
t
remen
t
d
u p
il
o
t
e
1
(pont JDBC
ODBC)
(pont
JDBC
-
ODBC)
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
try
try
{Connection cx =
DriverManager.getConnection("jdbc:odbc:DSNBDAccess","","");
Statement etat = cx.createStatement ();
ResultSet rset = etat.executeQuery("SELECT * FROM Avion");
} catch(SQLException ex) { … }
} catch (ClassNotFoundException ex) { … );
Christian Soutou - 2005 11
Dt S
N
ODBC
D
a
t
a
S
ource
N
ame
ODBC
Christian Soutou - 2005 12
Enregistrement d pilote 4 Oracle
Enregistrement
d
u
pilote
4
Oracle
import oracle.jdbc.driver.*;
try
try
{
DriverManager.registerDriver
( l jdb d i O l D i ())
(
new orac
l
e.
jdb
c.
d
r
i
ver.
O
rac
l
e
D
r
i
ver
())
;
Connection cx =
DriverManager.getConnection
("jdbc:oracle:thin:@telline.cict.fr:1526:etu923",
"soutou", "mdp");
Statement etat = cx.createStatement ();
// Fermeture de la connexion
cx close();
cx
.
close();
}
catch(SQLException ex) { }
Christian Soutou - 2005 13
Méthodes de Connection
Méthodes Description
Statement
Création d’un objet destiné à recevoir un ordre
Statement
createStatement()
Création
d’un
objet
destiné
à
recevoir
un
ordre
SQL sans paramètre
PreparedStatement Précompile un ordre SQL avec paramètres
prepareStatement(String)
CallableStatement
prepareCall
(String)
Déclare l’appel d’une procédure cataloguée avec
d
éventuels paramètres
prepareCall
(String)
d éventuels
paramètres
void
setAutoCommit(boolean) Positionne le commit automatique
void
commit
()
Valide la transaction
void
commit
()
Valide
la
transaction
void rollback() Invalide la transcation
void
close
()
Ferme la connexion
void
close
()
Ferme
la
connexion
Christian Soutou - 2005 14
Méthodes de Statement
Méthodes Description
RltSt
Eé t
SELECT
ti bldli
R
esu
ltS
e
t
executeQuery(String)
E
x
é
cu
t
e un
SELECT
e
t
renvo
i
e un ensem
bl
e
d
e
li
gnes
int
executeUpdate(String)
Exécute un ordre SQL LMD passé en paramètre et
renvoie le nombre de lignes traitées
executeUpdate(String)
renvoie
le
nombre
de
lignes
traitées
boolean execute(String) Exécute un ordre SQL dynamique passé en paramètre et
renvoie true si c’est un SELECT false si c’est un
LMD
LMD
void setMaxRows(int) Limite le nombre d’enregistrements à extraire par toute
requête issue de cet état
requête
issue
de
cet
état
.
int getUpdateCount() Nombre de lignes traitées par un ordre SQL dynamique
ou –1 si c’est un SELECT
void close() Ferme l’état
Christian Soutou - 2005 15
Résumé de l’API JDBC
DriverManager
Connection
getconnection
Connection
createStatement prepareStatement prepareCall
Statement PreparedStatement CallableStatement
executeQuery
setXXX
tXXX
ResultSet
executeQuery
Data Types
setXXX
ge
tXXX
getXXX
Christian Soutou - 2005 16
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !