JDBC - Bienvenue sur soutou.net

publicité
JDBC
JDBC : Interconnexion
J
Java
/ SQL
• Bibliothèques de classes (java.sql.* inclus dans
le JDK 1.4
1 4 : JDBC 3.0)
3 0)
• JDBC supporte le multi-thread
• Support de SQL92 Entry Level
Ch i i Soutou
Christian
S
http://w3.univ-tlse2.fr/icare/soutou
• Dri
Drivers
ers
http://java.sun.com/products/jdbc/jdbc.drivers.html
Christian Soutou - 2005
JDBC
Types de Pilotes JDBC
• Communication en mode client
client-serveur
serveur
déconnecté :
• Type 1 (JDBC-ODBC
(JDBC ODBC Bridge)
– Client épais
– 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
JDBC
ODBC
– Utilisation
• Application Java mais pas Applet
è implantation de JDBC
• Test, 1ère
• Base MS Access
Classe
Applet côté client ou Servlet,
EJB (Enterprise Java Beans)
Procédure cataloguée côté serveur
Christian Soutou - 2005
Java
• ODBC + Pilote ODBC du SGBD
• Applicatif Java
–
–
–
–
2
ODBC
BD
3
Christian Soutou - 2005
4
Types de Pilotes JDBC
Types de Pilotes JDBC
Java
Java
JDBC
Driver
Java
100%
• Type 2 (Native-API
(Native API Partly-Java
Partly Java Driver) DriverBD
– Client épais
• Type 3 (Net Protocol All-Java
All Java Driver)
– Client léger
• Pilote JDBC du SGBD
• Librairies client du SGBD
– Utilisation
• Pilote JDBC + Driver générique
DriverG java/natif
– Utilisation
• Multibases
• Application Java ou Applets
• Architectures 3 tiers
DriverBD
• Mieux que type 1 : code optimisé
• Applications Java 2 tiers mais pas applet
DriverBD
BD
Driver
Oracle
...
Driver
Oracle
BD
Christian Soutou - 2005
5
Christian Soutou - 2005
L’API JDBC (java.sql)
Types de Pilotes JDBC
• Type 4 (Native Protocol All-Java
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
– Utilisation
• Applets
• Architectures 2 tiers
Christian Soutou - 2005
6
BD
Interface Classes Exceptions
Interface-Classes-Exceptions
Description
Driver
Pilote appelé par le Driver Manager
Connection
Session avec une BD
Statement
Exécution d’ordres SQL standard
PreparedStatement
Gestion des ordres SQL avec paramètres
CallableStatement
Gestion des appels de procédures stockées
ResultSet
Tableau de lignes
g
résultant d’un ordre
DriverManager
Envoie les demandes de connexion au driver
SQLException
Extension de java.lang.Exception, détail de l’erreur SQL
…
7
Christian Soutou - 2005
8
Mécanismes de JDBC
Variables d’environnement
Données (NUMBER VARCHAR2...)
• PATH : chemin de la machine virtuelle Java (en général
installé dans C:\j2sdk1.4.0)
SELECT, INSERT…
Java
Preparedstatement
Connection
• CLASSPATH : paquetage Oracle en fonction du pilote
choisi
h i i (OracleHome\jdbc\lib\paquetage
(O
l H
\jdb \lib\
t
)
Version du JDK utilisé
JDK 11.1
1
JDK 1.2 et JDK 1.3
JDK 11.4
4
Statement
B
Base
JDBC
Paquetage JDBC Oracle
classes111.jar
l
111 j
classes12.jar
ojdbc14.jar
jdb 14 j
Christian Soutou - 2005
Statement
•
•
•
•
Importation de paquetages (oracle.sql, …)
Enregistrement du pilote
Ouverture de connexion(s) (Connection)
Création d’un état (Statement, PreparedStatement ou
•
•
Gestion de ResultSet
Fermeture des résultats, des états et connexions
CallableStatement)
9
Christian Soutou - 2005
10
D t Source
Data
S
N
Name
ODBC
Enregistrement
E
it
t du
d pilote
il t 1
(pont JDBC-ODBC)
JDBC ODBC)
try
{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
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
Christian Soutou - 2005
12
Enregistrement du
d pilote 4 Oracle
import oracle.jdbc.driver.*;
…
try
{
DriverManager.registerDriver
(
(new
oracle.jdbc.driver.OracleDriver());
l jdb d i
O
l D i
())
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
Description
ResultSet
R
ltS t
executeQuery(String)
int
executeUpdate(String)
E é t un SELECT ett renvoie
Exécute
i un ensemble
bl de
d lignes
li
Exécute un ordre SQL LMD passé en paramètre et
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
void close()
Description
Statement
createStatement()
Création d’un objet destiné à recevoir un ordre
SQL sans paramètre
PreparedStatement
prepareStatement(String)
Précompile un ordre SQL avec paramètres
CallableStatement
prepareCall(String)
Déclare l’appel d’une procédure cataloguée avec
dd’éventuels
éventuels paramètres
void
setAutoCommit(boolean)
void commit()
Positionne le commit automatique
Valide la transaction
void rollback()
Invalide la transcation
void close()
Ferme la connexion
Christian Soutou - 2005
14
Résumé de l’API JDBC
Méthodes
int getUpdateCount()
Méthodes
13
Méthodes de Statement
void setMaxRows(int)
Méthodes de Connection
Limite le nombre d’enregistrements à extraire par toute
requête issue de cet état
état.
Nombre de lignes traitées par un ordre SQL dynamique
ou –1 si c’est un SELECT
Ferme l’état
DriverManager
getconnection
Connection
prepareCall
createStatement
Statement
prepareStatement
PreparedStatement
CallableStatement
setXXX
executeQuery
ResultSet
getXXX
tXXX
Data Types
getXXX
Christian Soutou - 2005
15
Christian Soutou - 2005
16
Téléchargement