Vous êtes sur la page 1sur 27

Langage JAVA

Prof: R. EL AYACHI
Département d’Informatique
Faculté des Sciences et Techniques
Béni Mellal

1
Chapitre 7: Gestion des bases de
données
1. Introduction
2. Etapes de l’exploitation des BD

2
Prof: R. EL AYACHI
1. Introduction
Base de données (BD): Ensemble structuré de données enregistrées
sur des supports accessibles par l’ordinateur, représentant des
informations du monde réel et pouvant être interrogées et mises à
jour par une communauté d’utilisateurs.
Système de Gestion des Bases de Données (SGBD): Ensemble de
programmes permettant l’ajout, la modification, la recherche et la
suppression des données. (Exemples: Access, MySQL, Oracle, …)

3
Prof: R. EL AYACHI
1. Introduction
Exemple de (BD): (Table client)
Colonnes
Lignes

Clé primaire

4
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:

oLa commande SELECT


oLa commande UPDATE
oLa commande INSERT
oLa commande DELETE

5
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:
oLa commande SELECT
SELECT nom_colonnes
FROM ma_table
WHERE condition ;

oExemple:
SELECT *
FROM client
WHERE ville=′paris′;

6
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:
oLa commande UPDATE
UPDATE ma_table
SET nom_colonne = 'nouvelle valeur'
WHERE condition ;

oExemple:
UPDATE client
SET rue = '49 Rue Ameline',
ville = 'Saint-Eustache-la-Foret',
code_postal = '76210'
WHERE id = 2 ;

7
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:
oLa commande UPDATE
Table client

8
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:
oLa commande INSERT
INSERT INTO ma_table (col1,col2,…)
VALUES ('valeur 1', 'valeur 2', ...) ;

oExemple:

INSERT INTO client (id,nom,,ville,code_postal,pays)


VALUES (4, 'aaaaa', ‘beni mellal’,23000,’maroc') ;

9
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:
oLa commande DELETE
DELETE FROM table
WHERE condition ;

oExemple:
DELETE FROM utilisateur
WHERE date_inscription < 2012-04-10 ;

10
Prof: R. EL AYACHI
1. Introduction
Langages de manipulation des données:
oLa commande DELETE
Table utilisateur

11
Prof: R. EL AYACHI
1. Introduction
Communication entre une application Java et BD ?

Application Java Base de


données

ODBC et JDBC

12
Prof: R. EL AYACHI
1. Introduction
ODBC (Open DataBase Connectivity): une interface développée par
Microsoft pour uniformiser les accès aux bases de données.
 Existence de plusieurs pilotes ODBC (sous Windows):

Pilote Base de
Application
ODBC données

13
Prof: R. EL AYACHI
1. Introduction
 JDBC (Java DataBase Connectivity): une interface crée par Sun
Microsystems qui permette aux applications java d’accéder aux
sources de données par le biais d’une interface commune.
Interface Interface Base de
Application
JDBC-ODBC ODBC données

14
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD

En général, on trouve les étapes suivantes (pour une application


java utilisant l’interface JDBC):
1. Connexion à la base de données
2. Émission de requêtes SQL vers la base
(Réception et traitement des résultats de ces requêtes)
3. Fermeture de la connexion

15
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
1. Connexion à la base de données:
La connexion s’effectue à l’aide de la méthode de classe suivante :
Connection DriverManager.getConnection(String URL, String id, String mdp)
Avec
DriverManager: classe Java détenant la liste des pilotes disponibles pour
l’application
Connection: classe Java établissant un lien entre l’application et la base
URL: nom identifiant la base de données. Il a la forme suivante :
jdbc:nom_du_pilote:nom_de_la_source
id: identité de l’utilisateur (login)
mdp: mot de passe de l’utilisateur (password)

16
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
Exemple:
Connection connexion=null;
String url=...;
String id=...;
String mdp=...;
try{
connexion=DriverManager.getConnection(url,id,mdp);
} catch (Exception e){
// traiter l’exception
}

17
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
 Pour charger de la classe java qui fera l’interface avec le pilote
utilisé (dans notre exemple pilote ODBC), il faut utiliser la syntaxe
suivante: Class.forName(String nomClasse);
 La classe faisant l’interface avec les pilotes ODBC de MS Windows
s’appelle « sun.jdbc.odbc.JdbcOdbcDriver ».
Exemple:
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") ;
} catch (Exception e){
// traiter l’exception (classe inexistante)
}

 Les classes nécessaires à l’interface JDBC se trouvent dans le


package java.sql. On écrira donc en début du programme :
import java.sql.*;
18
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
2. Emission de requêtes vers la base:
L’interface JDBC permet l’émission des requêtes vers la base et le
traitement des résultats obtenus.
 SQL (Structured Query Language) est un langage de requêtes
standardisé pour les bases de données relationnelles. On y
distingue plusieurs types de requêtes :
• Requêtes d’interrogation de la base (SELECT)
• Requêtes de mise à jour de la base (INSERT, DELETE, UPDATE)
• Requêtes de création/destruction de tables (CREATE, DROP)

19
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
a. Classe Statement:
 Pour émettre une requête SQL vers une base de données,
l’application Java doit disposer d’un objet de type Statement. Cet
objet stockera le texte de la requête. Cet objet est nécessairement
lié à la connexion en cours.
 une méthode de la connexion établie permet de créer les objets
Statement nécessaires à l’émission des requêtes SQL.
 Si connexion est l’objet symbolisant la connexion avec la base de
données, un objet Statement est obtenu de la façon suivante :
Statement requete=connexion.createStatement();
 Une fois l’objet Statement est obtenu , les requêtes SQL peuvent être
émettre.

20
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
b. Emettre une requête d’interrogation:
 Une requête d’interrogation a la syntaxe suivante :
select col1, col2,... from table1, table2,...
where condition
order by expression
...
 Le résultat d’un select est une table
Exemple: select nom from articles
where stock_actu<stock_mini
order by nom

Pour exécuter ce type de requête, la classe Statement offre la


méthode executeQuery :
ResultSet executeQuery(String requête)
où requête est le texte de la requête SELECT à émettre.
21
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
Exemple:
On suppose que connexion est l’objet symbolisant la connexion
avec la base de données

Statement s = connexion.createStatement();
ResultSet rs = s.executeQuery(ʺselect nom from articles
where stock_actu<stock_mini ʺ);

22
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
c. Classe ResultSet (Résultat d’une requête select):
 Un objet de type ResultSet représente une table (ensemble de
lignes et de colonnes). A un moment donné, on n’a accès qu’à une
ligne de la table appelée ligne courante. Lors de la création initiale
du ResultSet, la ligne courante est la ligne n° 1 si le ResultSet n’est
pas vide. Pour passer à la ligne suivante, la classe ResultSet dispose
de la méthode next() :
boolean next()
 Cette méthode tente de passer à la ligne suivante du ResultSet et rend
true si elle réussit, false sinon. En cas de réussite, la ligne suivante devient
la nouvelle ligne courante. La ligne précédente est perdue et on ne pourra
revenir en arrière pour la récupérer.

23
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
d. Emettre une requête de mise à jour:
 Un objet de type Statement permet de stocker les requêtes SQL. La
méthode que cet objet utilise pour émettre des requêtes SQL de
mise à jour (INSERT, UPDATE, DELETE) n’est plus la méthode
executeQuery étudiée précédemment mais la méthode
executeUpdate :
int executeUpdate(String requête)
 La différence est dans le résultat : alors que executeQuery
renvoyait la table des résultats (ResultSet), executeUpdate renvoie
le nombre de lignes affectées par l’opération de mise à jour.

24
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
e. Emettre une requête SQL quelconque:
 L’objet Statement nécessaire à l’émission de requêtes SQL dispose
d’une méthode execute capable d’exécuter tout type de requête
SQL :
boolean execute(String requête)
 Le résultat rendu est le booléen true si la requête a rendu un
ResultSet (executeQuery), false si elle a rendu un nombre
(executeUpdate). Le ResultSet obtenu peut être récupéré avec la
méthode getResultSet et le nombre de lignes mises à jour, par la
méthode getUpdateCount. Ainsi on écrira :

25
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD

Statement S=...;
ResultSet RS=...;
int nbLignes;
String requête=...;
// exécution d’une requête SQL
if (S.execute(requête)){
// on a un resultset
RS=S.getResultSet();
// exploitation du ResultSet
...
} else {
// c’était une requête de mise à jour
nbLignes=S.getUpdateCount();
...
}

26
Prof: R. EL AYACHI
2. Etapes de l’exploitation des BD
3. Fermeture de la connexion:
 La fermeture de la connexion s’effectue à l’aide de la méthode
close() de la classe Connexion
Connection connexion=null;
URL base=...;
String id=...;
String mdp=...;
try{
connexion=DriverManager.getConnection(base,id,mdp);
} catch (Exception e){
// traiter l’exception
}
…..
connexion.close();
27
Prof: R. EL AYACHI

Vous aimerez peut-être aussi