Vous êtes sur la page 1sur 24

FORMATION  JAVA

Partie IX: Accès aux Bases de Données 
via JDBC

Dr. GOORE BI Tra / goore@inphb.edu.ci / (+225) 07 90 39 73


Accès aux bases de données via JDBC

 API JDBC (Java Database Connectivity) 
 Interface d’accès aux bases de données relationnelles; 
 Permet l’accès uniforme à un grand ensemble de 
SGBD (Oracle, Mysql, PostgreSql, etc,); 
 Ensemble de classes et d’interfaces Java 
 Les interfaces sont implémentés par des drivers 
 Package java.sql ou javax,sql

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 2
Accès aux bases de données via JDBC

 Pilotes (JDBC) de bases de données
 Ensemble de classes concrètes qui implémentent les 
interfaces spécifiées dans l’API JDBC
 Chaque implémentation correspond à un SGBD 
particulier 
 Les pilotes JDBC sont essentiellement écrites en java.
 Les classes pour une implémentation données se 
trouvent dans un fichier « .jar »

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 3
Accès aux bases de données via JDBC

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 4
 Quelques classes de l’API JDBC
Java.sql.Connection Crée une connexion avec une base de données précise
Charge les pilotes de bases de données et gère les 
Java.sql.DriverManager
connections entre l’application et le pilote
Java.sql.Statement Instruction SQL qui permet d’effectuer une requête.

Java.sql.PreparedStatement Permet de créer des requêtes paramétrées


Java.sql.CallableStatement Exécute les procédure stockées

Ensemble logique de colonnes et de lignes de données
Java.sql.ResultSet
renvoyées par l’exécution d’une instruction

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 5
Accès aux bases de données via JDBC

 Les étapes  d’accès à une base de données
 1) Charger une classe de  pilote JDBC en mémoire
 2) Créer une Connexion à la Base de Données 
 3) Créer une instruction 
 4)  Exécution de l’instruction pour obtenir un résultat 
sous forme de table
 5) Exploiter le résultat
 6) Fermeture les connexions ouvertes,

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 6
Accès aux bases de données via JDBC

 Les classes d’accès aux BD via JDBC

 DriverManager permet de créer des «Connection»
 Les «Connection» permettent de créer des requêtes
 Les requêtes permettent d’obtenir des résultats
Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 7
Accès aux bases de données via JDBC

 Chargement du bon pilote en mémoire
 Le pilote est représenté par une bibliothèque de 
classe « .jar »
 Deux méthodes pour le chargement
• Modifier les propriétés du système
– Les propriétés du système sont stockées dans l’objet Properties du 
package java.util
– System.setProperty(" jdbc.drivers ", " com.mysql.jdbc.Driver "); 
• Utiliser la classe « Class » pour charger la classe en mémoire
– Class.forName(String) ClassNotFoundException
– Exemple: Class.forName("com.mysql.jdbc.Driver");

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 8
Accès aux bases de données via JDBC

Création d’une connexion à la base de données
 Exemple
• Connection connexion = 
DriverManager.getConnection("jdbc:mysql://localhost/Personnel", "root", 
"rootpwd");
 Création d’une requête (statement)
 Statement instruction = connexion.createStatement();
 Exécution d'une instruction SQL. 
 ResultSet resultat = instruction.executeQuery("Requete SQL"); 
 Exemple
• ResultSet résultat = instruction.executeQuery("SELECT * FROM Personne");

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 9
Accès aux bases de données via JDBC

 Exploitation des résultats
while (resultat.next()) {
Traitements
}

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 10
Accès aux bases de données via JDBC

 Exemple d’Application
 Nom de la base de donnée: bd‐peronnel
 Compte d’accès à la base de données
• Nom utilisateur: admin
• Mot de pass: admin123
 Tables de la Base de Données
• Une seule table: employe
• Colonne de la table: matricule, nom, prenom, fonction
 Bibliothèque Driver Mysql: com.mysql.jdbc.Driver.jar
 Classe Driver Mysql:  com.mysql.jdbc.Driver
Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 11
Accès aux bases de données via JDBC
import java.sql.*;
class TestBd {
public static void main(String[] args)  {
try {
// Class.forName("com.mysql.jdbc.Driver");
System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver"); 
Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/personnel", "admin", "admin123")
Statement instruction = connexion.createStatement();
ResultSet resultat = instruction.executeQuery("SELECT * FROM Personne");
while (resultat.next())  {
System.out.println(" Matricule : "+ resultat.getInt(" matricule") );
System.out.println("Nom et Prenoms : "+ resultat.getString("nom") + "   "+ resultat.getString("prenom") );
System.out.println("Fonction : "+ resultat.getInt("fontcion"));
}
}
atch (ClassNotFoundException ex) { System.err.println("Erreur Driver");}
catch (SQLException ex) { System.err.println("Erreur Localisation BD");}    
}
}
Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 12
Ajout et Modification de Données
 Rappel SQL
 Insérer un enregistrement 
• INSERT INTO TableTest (champ1, ... , champN) VALUES (valeur1, ... , 
valeurN) 
 Modifier un enregistrement 
• UPDATE TableTest SET champ1=valeur1, champ2=valeur2, ... WHERE 
champN=valeurN
 Supprimer un enregistrement 
• DELETE FROM TableTest WHERE champN=valeurN
 Rechercher dans une table 
• SELECT champ1, champ2, ... FROM TableTest
• SELECT champ1, champ2, ... FROM TableTest WHERE champN=valeurN
• SELECT champ1, champ2, ... FROM TableTest WHERE champN=valeurN
ORDER BY champN

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 13
Paramétrage des requête

 Objectif
 Rendre plus flexible, plus dynamique l’accès aux bases 
de données

 Principe
 Les objets à insérer dans une base de données sont 
des variables (paramètres)
 Les critères de rechercher dans une base de données 
sont des variables (paramètres)

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 14
Paramétrage des requête

 Requête paramétrée
 Chaque paramètre est spécifié par un « ? »
 Exemple
• SELECT * FROM employe WHERE nom = ?
 Une requête paramétrée est utilisée via la classe 
«PreparedStatement »
 La méthode «preparedStatement» de la classe 
Connection est utilisée à cet effet,
 Exemple
String laRequete = "INSERT INTO employe (matricule, nom, prenom, fonction) VALUES(?,?,?,?)";
PreparedStatement instruction = connection.prepareStatement(laRequete);

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 15
Paramétrage des requête

Affectation des valeurs effectives
 Elle utilise la méthode suivante de la classe PreparedStatement
• Void settypeParam(int positionParam, typeParm ValeurParam);

 Exemple
instruction.setInt(1, vmatricule);
instruction.setString(2, vnom);

Exécution de la requête
 instruction.executeQuery() (cas de consultion)
 instruction.executeUpdate()  (cas de mise à jour)

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 16
Paramétrage des requête

 Exemple 1: insertion dans une base de donnée

String laRequete = "INSERT INTO employe (matricule, nom, prenom, fonction) VALUES(?,?,?,?)";


PreparedStatement instruction = conn.prepareStatement(laRequete);
instruction.setInt(1, vmatricule);
instruction.setString(2, vnom);
instruction.setString(3, vprenom);
instruction.setString(4,vfonction);
instruction.executeUpdate();

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 17
Paramétrage des requête

 Exemple 2 : Sélection suivant un critère
String laRequete = " SELECT * FROM ? WHERE nom = ? ";
PreparedStatement instruction = conn.prepareStatement(laRequete);
instruction.setString(1, "employe" );
instruction.setString (2, "ousmane"  );
ResultSet rs = instruction.executeQuery();

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 18
Manipulation des résultats d’une requête

La classe  ResultSet
 Quelques méthodes
– String getString(int colonne); 
– String getString(String  nom du champ); 
– int getInt(int); 
– int getInt(String); 
– boolean getBoolean(int); 
– boolean getBoolean(String); 
– byte getByte(int); 
– byte getByte(String); 
– short getShort(int); 
– short getShort(String ); 
– long getLong(int ); 
– long getLong(String ); 
Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 19
Manipulation des résultats d’une requête

La classe  ResultSet
 Quelques méthodes
• Public resultSetMetaData getMetaData() 
• Public boolean relative (int n) throws SQLException;
• public boolean absolute(int row) throws SQLException;
• public boolean next() throws SQLException ;
• public boolean previous() throws SQLException
• public void beforeFirst() throws SQLException ;
• public boolean first() throws SQLException; 
• public void afterLast() throws SQLException ; 
• public boolean last() throws SQLException ; 
• public int getRow() throws SQLException ; 
• public void moveToInsertRow() throws SQLException

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 20
Les méta Données d’une base de données

 La classe DatabaseMetaData
 Donner des informations sur la base de donnée
Méthode Rôle
int getColumnCount() Nombre de colonnes du ResultSet

String getColumnName(int) Nom de la colonne de numéro donné

String getColumnLabel(int) Libellé de la colonne donnée

Renvoie le nom de l'ordinateur hôte ainsi que le 
String  getUserName( ) 
nom de l'utilisateur
String getDriverName() retourne le nom du driver utilisé

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 21
Les méta Données d’une base de données

 Exemple
DatabaseMetaData bd = connexion.getMetaData();
System.out.println("Nom du Driver: "+ bd.getDriverName ());
System.out.println("User Name: "+ bd.getUserName ());

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 22
Les méta Données d’un résultat de requête
 La classe ResultSetMetaData
 Donner des informations sur un résultat
Méthodes Résultat
int getColumnCount( ) ; Nombre de colonne constituant la table 
String getTableName( i ) ;  Nom de la table 
String getColumnName( i ) ; Renvoie le nom de la colonne i 
String getColumnLabel( i ) ;  Fournit le titre suggéré de la colonne 
String getColumnTypeName( i ) ;  Type de la colonne au sens base de données 
int getColumnDisplaySize( i );  Taille de la colonne 

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 23
Les méta Données d’un résultat de requête

 Exemple
ResultSetMetaData meta = resultat.getMetaData ();
Int i = meta.getColumnCount()

Dr. GOORE BI Tra                                         (+225) 07 90 39 73                       goore@inphb.edu.ci 24

Vous aimerez peut-être aussi