0% ont trouvé ce document utile (0 vote)
16 vues14 pages

IHM-Java Chap 5

Le chapitre 5 traite de la connexion à une base de données en utilisant l'API JDBC dans une application Java. Il décrit les étapes nécessaires pour établir une connexion, émettre des requêtes SQL et traiter les résultats, en utilisant un exemple avec une base de données MySQL. Les concepts incluent le chargement du pilote JDBC, l'utilisation des classes Statement et ResultSet, ainsi que l'exécution de requêtes d'interrogation et de mise à jour.

Transféré par

mohammed.benakkaouayad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
16 vues14 pages

IHM-Java Chap 5

Le chapitre 5 traite de la connexion à une base de données en utilisant l'API JDBC dans une application Java. Il décrit les étapes nécessaires pour établir une connexion, émettre des requêtes SQL et traiter les résultats, en utilisant un exemple avec une base de données MySQL. Les concepts incluent le chargement du pilote JDBC, l'utilisation des classes Statement et ResultSet, ainsi que l'exécution de requêtes d'interrogation et de mise à jour.

Transféré par

mohammed.benakkaouayad
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

3/17/2025

Chap 5
JDBC

Plan du cours

Chap 1 : Initiation au Langage Java Chap 3 : Les Servlets


- Introduction - Les HttpServlet
- Eléments de base du langage - Servlet Package Hierarchy
- Les tableaux de données et chaines de caractères - doGet et doPost
- Les instructions d’écriture et de lecture - Réponse http
- Classes et Objets - Annotations serveur
- Héritage - Exécution d’une servlet
- Packages
- Classes internes et Interfaces Chap 4 : Les JSP
- Les exceptions
- Définition d’une JSP (Java Server Page)
- Type d’éléments de balise JSP
Chap 2 : Initiation à l’architecture JEE - Balises usuelles JSP
- Définitions - EL : Expression Language
- Architecture client-serveur en http - JSTL
- Composantes d’une Application Web Java J2EE Chap 5 : Connexion à une base de données
- Protocole http - L’API JDBC et les bases de données
- Commandes GET / POST / HEAD - Connexion à une base de données relationnelle
- Le patron de conception Modèle-Vue-Contrôleur - Émission de requêtes SQL vers la base
- Les PreparedStatement

IHM - Java 2 2

1
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

L’APIJDBC et les basesde données :

Dans une application JAVA utilisant une base de données avec L’API JDBC, on trouvera
généralement les étapes suivantes :

 Importer les packages pour les classes JDBC: import java.sql.*;


 Enregistrer le pilote JDBC
 Ouvrir la connexion à la base de données
 Émission de requêtes SQL vers la base
 Réception et traitement des résultats de ces requêtes
 Fermeture de la connexion

 Nous allons suivre ces étapes sur un exemple


 Nous considérons une base de données MySQL appelée g_personnel

IHM - Java 3

Connexion à une base de données


(CHAPITRE 5)

Préparerla basede données:

Télécharger MySql

https://dev.mysql.com/downloads/windows/installer/8.0.html
IHM - Java 4

2
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

Préparerla basede données:


--Code SQL:
CREATE DATABASE g_personnel;
USE g_personnel;
CREATE TABLE IF NOT EXISTS `Personne` (
`idPersonne` TINYINT,
`nom` varchar(15) default NULL,
`prenom` varchar(15) default NULL,
`age` TINYINT,
PRIMARY KEY (`idPersonne`)
)
INSERT INTO `Personne` VALUES(1,'ALAOUI','Mohammed',22);
INSERT INTO `Personne` VALUES(2,'HACHIMI','Fatima',21);
INSERT INTO `Personne` VALUES(3,'NOUACH','Adil',23);

SELECT * FROM g_personnel.Personnel

IHM - Java 5

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:
Avant l’exécution du programme un pilote de connexion (Connector) doit être ajouté au
projet en cours
Télécharger le pilote jdbc (si ce n’est déjà fait)
https://dev.mysql.com/downloads/connector/j/5.0.html

Installation du pilote JDBC sous Eclipse


 Télécharger le fichier mysql-connector-java-xx.xx.tar dans un répertoire choisit.
 Décompresser l’archive
 Sous Eclipse cliquez avec le bouton droit sur votre projet
 Ouvrir Propreties puis Java Build Path puis Libraries
 Cliquez sur le bouton Add External JARs
 Ouvrir le fichier JAR : mysql-connector-java-5.1.48-bin

IHM - Java 6

3
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:

Bibliothèque externe

IHM - Java 7

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:
1- Chargement du pilote JDBC
Pour exploiter une base de données, une application Java doit d’abord charger le pilote qui
va servir à la connexion.
try {
//Chargement de pilote
pilote=new String("com.mysql.jdbc.Driver");
Class.forName(pilote);
//…
}
catch( ClassNotFoundException e) {
System.err.println("Erreur lors du chargement du pilote : " + e);
}

IHM - Java 8

4
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:
2- Connexion à la base
Après le chargement du pilote la connexion à la base devient possible via la méthode :

Connection myCnx=java.sql.DriverManager.getConnection(String url, String user,


String password) throws SQLException

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 grâce auquel
l’application va transmettre des requêtes SQL à la base et recevoir des résultats
 url : nom identifiant la base de données.
 user : Nom de l’utilisateur
 password : Mot de passe

IHM - Java 9

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:
2- Connexion à la base
URL a la forme suivante :
jdbc:mysql://[machine][:port]/base[?param1=val1][&param1=val2] …

 jdbc:mysql : Le nom du protocole employé


 [machine][:port] Le nom de la machine suivi de manière optionnelle d’un numéro de
port ( indispensable si MySQL a été configuré pour utiliser un port différent du port par
défaut).
 base Le nom de la BDD à laquelle nous souhaitons accéder.
 param1=val1,param1=val2,etc., Des paires (nom,valeur) de paramètres passées au
serveur

url = new String("jdbc:mysql://localhost:8080/g_personnel");


IHM - Java 10

5
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:
import java.sql.*;
public class Connexion {
Connection myCnx ;
String url,pilote;
public Connexion() {
try {
//Chargement de pilote
pilote=new String("com.mysql.cj.jdbc.Driver");
Class.forName(pilote);
// Definition de l'URL de connexion
url = new String("jdbc:mysql://127.0.0.1/g_personnel?serverTimezone=UTC");
// Etablissement de la Connexion
myCnx = DriverManager.getConnection(url,"root","");
System.out.println("CONNEXION ETABLIE");
// Fermeture de la connexion
myCnx.close();
}
catch( ClassNotFoundException e) {System.err.println("Erreur lors du chargement
du pilote : " + e); }
catch (SQLException e) {System.err.println("Erreur de syntaxe SQL :" + e);}
}
public static void main(String[] args) {
new Connexion();
}
} 11

Connexion à une base de données


(CHAPITRE 5)

A- L’étapede connexion:
2- Connexion à la base

// Definition de l'URL de connexion


url = new String("jdbc:mysql://localhost/g_personnel?serverTimezone=UTC&useSSL=false");

IHM - Java 12

6
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


L’interface JDBC permet :
 l’émission de requêtes SQL vers la base de données connectée à l’application Java
 le traitement des résultats de ces requêtes.

Le langage 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 :
 les requêtes d’interrogation de la base LMD (SELECT)
 les requêtes de mise à jour de la base LMD (INSERT, DELETE, UPDATE)
 les requêtes de création/destruction/modification de tables LDD (CREATE, DROP, ALTER)

IHM - Java 13

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


1- La 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.
 Il est nécessairement lié à la connexion en cours.
Si myCnx est l’objet symbolisant la connexion avec la base de données, un objet Statement
est obtenu de la façon suivante :
Statement st = myCnx.CreateStatement();
Une fois obtenu un objet Statement, on peut émettre des requêtes SQL.
Cela se fera différemment selon que la requête est une requête d’interrogation ou de mise
à jour de la base(LMD/LDD).

IHM - Java 14

7
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


2- Émettre une requête d’interrogation de la base
Une requête d’interrogation est classiquement une requête du type :
SELECT col1, col2,... FROM table1, table2,...
WHERE condition
ORDER BY expression ...

1. Une jointure est faite avec toutes les tables qui sont derrière le mot clé FROM
2. Seules les colonnes qui sont derrière le mot clé SELECT sont conservées
3. Seules les lignes vérifiant la condition du mot clé WHERE sont conservées
4. Les lignes résultantes ordonnées selon l’expression du mot clé ORDER BY forment le
résultat de la requête.

IHM - Java 15

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


2- Émettre une requête d’interrogation de la base
Pour exécuter ce type de requête, la classe Statement offre la méthode :
ResultSet st.executeQuery(String sql)
Exemples
La base g_personnel qu’on traite contient une table personne :

IHM - Java 16

8
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


2- Émettre une requête d’interrogation de la base
Pour afficher le contenu de la table Personne
//Création d'une instruction
Statement statement= myCnx.createStatement();

// Exécution d'une requete


String query = "select * from personne";
ResultSet rs = statement.executeQuery(query);
while(rs.next()) {
System.out.println(
rs.getString(1)+" "+
rs.getString(2)+" "+
rs.getString(3)+" "+
rs.getString(4)
) ;
}
IHM - Java 17

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


2- Émettre une requête d’interrogation de la base

String query = "select * from personne where age <22";

IHM - Java 18

9
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


3- La classe ResultSet : résultat d’une requête select
Un objet de type ResultSet représente une table, c’est à dire un ensemble de lignes et de
colonnes.
Lors de la création initiale du ResultSet, la ligne courante est la ligne n° 1 si le ResultSet
n’est pas vide.
ResultSet dispose de plusieurs méthodes, on cite entre autres :
 boolean next() Permet d’exploiter les différentes champs
 String getString(int indiceColonne)
 String getString("nomColonne")

Permettent d’obtenir les différents champs de la ligne courante

IHM - Java 19

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


4- La classe ResultSetMetadata
La classe ResultSetMetaData donne des informations sur la nature des colonnes de la
table à savoir :
 le nombre de colonnes du ResultSet :
int getColumnCount()
 le nom de la colonne i du ResultSet (i>=1)
String getColumnLabel(int i)
 Si RS est un ResultSet, le ResultSetMetaData associé est obtenu par
:RS.getMetaData()
Exemple d’utilisation :
System.out.println("Nombre de colonne dans cette base est " +
rs.getMetaData().getColumnCount()) ;

IHM - Java 20

10
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


Statement statement = con.createStatement();
String query = "select * from personne";
ResultSet rs = statement.executeQuery(query);
ResultSetMetaData rsMetaData = rs.getMetaData();
int numberOfColumns = rsMetaData.getColumnCount();
System.out.println("Nombre de colonne" + numberOfColumns);
for (int i = 1; i <= numberOfColumns; i++)
System.out.print(rsMetaData.getColumnName(i)+" ");
while(rs.next()) {
System.out.println(rs.getString(1)+" \t"+ rs.getString(2)+" \t"+
rs.getString(3)+"\t "+ rs.getString(4)) ;
}

IHM - Java 21

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


5- Émettre une requête de mise à jour de la base de données
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) est :

int java.sql.Statement.executeUpdate(String sql)

qui renvoie le nombre de lignes affectées par l’opération de mise à jour.

IHM - Java 22

11
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


5- Émettre une requête de mise à jour de la base de données
Ajouter une ligne :
String queryInsert="INSERT INTO personne VALUES(4,'HASSAN','ELRADI',44)";
statement.executeUpdate(queryInsert);

IHM - Java 23

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


5- Émettre une requête de mise à jour de la base de données
Modifier une ligne :
String queryUpdate="update personne set AGE=18 WHERE PRENOM='FATIMA'";
statement.executeUpdate(queryUpdate);

IHM - Java 24

12
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

B- Émissionde requêtesSQL versla base:


5- Émettre une requête de mise à jour de la base de données
Supprimer une ligne :
String queryDelete="DELETE FROM personne where NOM='Alaoui'";
statement.executeUpdate(queryDelete);

IHM - Java 25

Connexion à une base de données


(CHAPITRE 5)

C- Le PreparedStatement:
Un PreparedStatement est créé à partir d’une des méthodes prepareStatement de
l’interface Connection.
Lors de l’appel à prepareStatement, il faut passer la requête SQL à exécuter.
Cependant, cette requête peut contenir des ? indiquant l’emplacement des paramètres.
L’interface PreparedStatement fournit des méthodes de la forme :
PreparedStatement.setXXX(int parameterIndex, XXX x)
XXX représente le type du paramètre, parameterIndex sa position dans la requête SQL (attention,
le premier paramètre a l’indice 1) et x sa valeur

IHM - Java 26

13
3/17/2025

Connexion à une base de données


(CHAPITRE 5)

C- Le PreparedStatement:
Exemple :

String prepsql = "insert into user(id,nom, dateInscription, age)


values (?, ?, ?,?)";

try (PreparedStatement pstmt = cnx.prepareStatement(prepql)) {

pstmt.setInt (1, 101);


pstmt.setInt (2, "Alaoui");
pstmt.setDate(3, new Date());
pstmt.setInt(4, 33);

pstmt.executeUpdate();
}
pstmt.close();

IHM - Java 27

Connexion à une base de données


(CHAPITRE 5)

Exercices
1- Réalisation de connexion via un projet java SE
2- Réalisation de connexion via un projet java EE(MVC-Servlet-JSP-JDBC)

IHM - Java 28

14

Vous aimerez peut-être aussi