Documente Academic
Documente Profesional
Documente Cultură
2008/2009
Plan
Problème
Qu’est ce que JDBC ?
Objectifs de JDBC
Avantages
L’API JDBC
Architecture JDBC (modèle à 2 couches)
Drivers JDBC
Modèles de connexion en Java
Scénarios d’utilisation
Mettre en œuvre JDBC
Avec JDBC, on peut aussi ...
Conclusion
Solution: JDBC
Vue d’ensemble
du paquetage java.sql
Protocole BD spécifique
Client Serveur
TCP / Protocole propriétaire
Application J
D SGBD
ou
B
Applet C
BD
Client Serveur
TCP / RMI / CORBA
Application Middleware
ou
Applet JDBC
SGBD
BD
JDBC DriverManager
BD
JDBC Appli. Driver (I ou II)
Intranet
Server
SGBDR
BD
JDBC DriverManager
Intranet
Internet
BD
Server
Intranet/
Internet
Database Server
Middleware server Web server
JDBC DriverManager
BD BD
Application Server
Intranet
26 Enseignante : Ettouil Monia 22/02/2009
Mettre en œuvre JDBC
API JAVA
• java.sql.DriverManager
Classes de connexion
• java.sql.Connection
• java.sql.Statement
Interfaces de requête sql
• java.sql.PreparedStatement
• java.sql.CallableStatement
Class.forName("com.mysql.jdbc.Driver ");
ou
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3 types de Statement :
Statement : requêtes statiques simples
PreparedStatement : requêtes dynamiques pré-compilées
(avec paramètres d’entrée/sortie)
CallableStatement : procédures stockées
PreparedStatement req2=connexion.prepareStatement(str);
Statement st = connexion.createStatement();
ResultSet rs = st.executeQuery(
"SELECT nom, prenom FROM clients " +
"WHERE nom=‘Ali’ ORDER BY prenom");
int nb = st.executeUpdate("INSERT INTO dept(DEPT) " +
"VALUES(06)");
le driver JDBC effectue d’abord un accès à la base pour découvrir les
types des colonnes impliquées dans la requête puis un 2ème pour
l’exécuter..
il faut donc les lire "manuellement" et les stocker dans des variables pour un
usage ultérieur
while(rs.next()) {
int i = rs.getInt("a");
String s = rs.getString("b");
byte[] b = rs.getBytes("c");
}
resultset.close();
statement.close();
connection.close();
Dans le cas d ’une modification de donnée (INSERT, UPDATE, DELETE), on utilise la méthode
executeUpdate(…) qui renvoie un entier spécifiant le nombre d’enregistrements modifiés:
String reqSql = "DELETE FROM ...";
int n = st.executeUpdate(reqSql);