Vous êtes sur la page 1sur 11

TP - Programmation WEB

TP1 Programmation WEB :


Connexion à la base de données en
utilisant JDBC

Objectifs :
A la fin de ce TP, vous serez capable de :

- Appliquer les étapes pour se connecter a une base de données en utilisant JDBC
- Télécharger et charger le driver convenable pour votre SGBDR
- Se connecter a une base de données
- Formuler et exécuter une requête en utilisant les possibilités offertes par JDBC
- Récupérer et traiter le résultat d’une requête SQL
- Structurer votre couche d’accès aux données

1
A.DAIF
TP - Programmation WEB

1. Préparer l’environnement et les prérequis pour l’utilisation du


JDBC
Vous devez dans un premier temps préparer l’environnement pour que vous puissiez suivre et
réaliser ce TP, pour cela il faut :

- Télécharger et installer JDK (JDBC est fourni avec le JDK) :


https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
- Télécharger et installer Eclipse : https://www.eclipse.org/downloads/
- Installer un SGBR, dans ce premier TP nous allons opter pour Mysql que vous pouvez
télécharger depuis : https://dev.mysql.com/downloads/mysql/
- Télécharger le Pilote JDBC pour MySQL : https://cdn.mysql.com//Downloads/Connector-
J/mysql-connector-java-8.0.19.tar.gz

N.B : les liens peuvent être obsolètes ou ont été changés (dernière date d’accès : 22/02/2020)

2. Préparer une base de données

Pour le premier test, nous allons créer une petite base de données avec une seule table pour mener à
bien le premier objectif pédagogique, qui consiste à :

- Utiliser un programme JAVA (mode console)


- Etablir une connexion
- Exécuter une requête
- Afficher le résultat retourné.

Apres avoir installé MySQL, vous aurez un outil nommé « WORKBENCH » c’est une sorte d’IDE qui va
vous permettre de gérer vos base de données ainsi votre serveur.

Nous allons utiliser cet outil pour exécuter les scripts ci-après :

- Pour Créer une base de données nommée « mydb » :

CREATE DATABASE `mydb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE


utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

- Pour créer une table nommée « etudiant »

CREATE TABLE `etudiant` (

`idEtudiant` int NOT NULL AUTO_INCREMENT,

`Nom` varchar(45) DEFAULT NULL,

`prenom` varchar(45) DEFAULT NULL,

`Age` int DEFAULT NULL,

PRIMARY KEY (`idEtudiant`)

) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

2
A.DAIF
TP - Programmation WEB
- Essayer d’ouvrir la table est d’ajouter une ou deux lignes avec toutes les informations

INSERT INTO `mydb`.`etudiant` (`Nom`, `prenom`, `Age`) VALUES ('Samir', 'Kamali', '20');

INSERT INTO `mydb`.`etudiant` (`Nom`, `prenom`, `Age`) VALUES ('Amira', 'Fanine', '35');

INSERT INTO `mydb`.`etudiant` (`Nom`, `prenom`, `Age`) VALUES ('DAIF', 'Abdelmouiz', '25');

3. Création du projet Java et importation du pilote JDBC pour


MySQL :

Pour créer un projet Java, Ouvrir « Eclipse », sur la page d’accueil, sous le menu « File » cliquer sur
« new » ensuite « Java Project »:

Une nouvelle fenêtre s’ouvre, remplir les informations comme suite :

N.B : si c’est votre premier projet après l’installation d’ eclipse, éventuellement, vous aurez besoin de
paramétrer le « JRE », il suffit de cliquer sur « Configure JRE… » Et de préciser le répertoire d’installation
de votre « JDK ».

3
A.DAIF
TP - Programmation WEB

Cliquer ensuite sur « Finish » pour avoir votre projet.

Nous allons créer notre première class, pour cela, Sélectionner « TP1JDBC1 », et cliquer droit,
sélectionner « New » ensuite cliquer sur « Class » :

Vous allez remplir les informations comme suite, et noter bien qu’il faut cocher la case « Public Static
void main… » Afin de générer la méthode main automatiquement.

4
A.DAIF
TP - Programmation WEB

La figure ci-après montre Le résultat de ces étapes, vous remarquez que le IDE a créé automatiquement
un package avec le nom « Com.Main », où on trouve notre classe « TestClass »:

Avant de commencer l’implémentation du JDBC, il faut s’assurer que l’environnement JAVA est bien
installé et que « Eclipse » et bien configuré, nous allons exécuter un programme de test comme suite :

- Ajouter l’instruction :

System.out.println("Salamo Alikom mes Chers Etudiants");

Enregistrer les modifications, avec le raccourci « CTRL+S », cliquer sur le bouton vert « Run » en haut,
il faut avoir le même résultat affiché en bas sur l’onglet « Console ».

5
A.DAIF
TP - Programmation WEB

Apres avoir testé l’environnement, nous allons ajouter le pilote JDBC de MySQL a notre projet, pour
cela, nous allons ouvrir le fichier décompressé téléchargé dans la section 1, et de suivre les étapes
suivantes pour ajouter le pilote a notre projet :

Apres le décompression du fichier, nous aurons le contenu ci-après, le fichier qui nous intéresse, c’est
le fichier avec l’extension « .jar ».

Revenez sur eclipse, cliquez bouton droit sur votre projet, ensuite « Build Path » et cliquez sur
« Configure Build Path ».

6
A.DAIF
TP - Programmation WEB

Une nouvelle fenetre s’ouvre, cliquer ensuite sur « Add External JARs.. »

Pointer ensuite sur le dossier là où vous avez décompressé le fichier rar, et sélectionner le fichier
« mysql-connector-java-8.0.19.jar »

7
A.DAIF
TP - Programmation WEB
Vérifier si le fichier est maintenant ajouter comme le montre la figure ci-dessus, et cliquer sur « Apply
and Close »

4. Etablir une connexion avec la base de données :


4.1. Charger le pilote :
La première chose que vous devez faire, est d'établir une connexion avec votre SGBD. Cela implique
deux étapes :

- Charger le pilote du SGBDR objectif


- Créer la connexion en utilisant l’URL adéquate.

Charger le pilote ou les pilotes que vous voulez utiliser est très simple. Si par exemple, vous voulez
utiliser le pilote JDBC-MySQL, ce code le chargera :

Class.forName("com.mysql.jdbc.Driver");

La méthode « forName » est une méthode STatic, qui invoque un bloc statique de la class driver afin
d’enregistrer le driver et le charger.

Vous n'avez pas besoin de créer une instance du pilote et de le référencer avec DriveManager, appeler
Class.forName le fera pour vous automatiquement. Si vous aviez à créer votre propre instance, vous
créeriez un duplicata inutile.

Une fois le pilote chargé, vous êtes prêt pour créer une connexion avec le SGDBR MySQL dans notre
exemple.

4.2. Créer une connexion.

La deuxième étape pour établir une connexion est d'avoir les informations appropriées pour se
connecter à votre SGBDR. Cette ligne de code illustre l'idée :

Connection con = DriverManager.getConnection(url, "LeLogin","LeMotDePasse");

Cette étape est très simple, le plus dur est de fournir quelque chose pour l'URL. Si vous utilisez JDBC-
MySQL, l'URL JDBC commencera par jdbc:: . Le reste de l'URL, c'est généralement le nom de votre
SGBDR et la source de données.

Donc, admettons que vous utilisiez JDBC-MySQL pour accéder à une source de données MySQL appelé
"mydb", par exemple, votre URL JDBC sera « jdbc:mysql://localhost:3306/mydb ». À la place de "
LeLogin", vous devrez mettre le nom que vous utilisez pour vous loguer auprès de votre installation
MySQL, et à la place de "LeMotDePasse", votre mot de passe pour ce acompte. Donc si vous voulez
vous identifiez à votre SGBD avec comme nom de login "root" et comme mot de passe "1234", ces
deux lignes de code établiront la connexion :

String url = " jdbc:mysql://localhost:3306/mydb";

Connection con = DriverManager.getConnectio(url,"root","1234");

8
A.DAIF
TP - Programmation WEB
Si un des pilotes que vous avez chargé reconnaît l'URL JDBC fournit dans la méthode
DriverManager.getConnection , ce pilote établira une connexion avec le SGBD spécifié dans l'URL
JDBC.La class DriverManager, prendra en charge tout les détails afin d'établir, pour vous, la connexion.

4.3. Créer Une instruction JDBC

Un objet Statement, est celui responsable d’envoyer votre instruction SQL vers le SGBDR. Vous créerez
simplement un objet Statement puis, l'exécuterez, lui fournissant la méthode d'exécution appropriée
avec l'instruction SQL que vous voulez envoyer. Pour une instruction SELECT, la méthode à utiliser est
executeQuery. Pour les instructions visant à créer ou modifier le contenu des tables, la méthode est
executeUpdate.

Vous devez avoir l'instance d'une connexion active pour créer un objet Statement. Dans l'exemple
suivant, nous utilisons notre objet Connection conn, pour créer l'objet Statement stmt :

Statement stmt = conn.createStatement();

A ce niveau, stmt existe, mais il n'a aucune instruction SQL à passer au SGBD. Nous devrons la fournir
dans la méthode que nous utiliserons pour exécuter stmt. Par exemple, dans le bout de code suivant,
nous proposons executeQuery avec l'instruction SQL ci-apres, L'étoile (*) dans l'instruction SQL
indique que toutes les colonnes devront être sélectionnées. N'ayant pas de clause WHERE définissant
la restriction, nous effectuons la sélection sur toute la table.

stmt.executeQuery("select * from etudiant") ;

Le résultat, désignant la table entière, devrait ressembler à ceci

Le résultat ci-dessus est ce que vous devriez voir sur votre terminal si vous avez entré la requêtes SQL
directement dans le système de la base de données. Lorsque nous accéderons à une base de données
au travers d'une application Java-JDBC, nous aurons besoin de stocker les résultats, pour que nous
puissions les utiliser. Nous verrons comment faire tout ça dans la prochaine section.

4.4. Récupérer le résultat :

9
A.DAIF
TP - Programmation WEB
Nous allons maintenant voir comment envoyer la requête écrite dans la section précédante depuis un
programme écrit en Java, et comment accéder à ce résultat. JDBC renvoie les résultats dans un objet
ResultSet, nous avons besoin donc de déclarer une instance de la class ResultSet pour contenir nos
résultats. Le code qui suit déclare l'objet ResultSet rs et lui assigne le résultat de notre requête
précédente :

ResultSet rs = stmt.executeQuery("select * from etudiant") ;

La variable rs, qui est une instance de ResultSet, contient les lignes de notre table « etudiant ». Pour
pouvoir accéder aux informations de chaque étudiant (noms par exemple), nous irons dans chaque
ligne et récupèrerons les valeurs selon leur type. La méthode next() déplace ce qui est appelé curseur
à la ligne suivante, et fait de cette ligne (appelée la ligne courante) celle sur laquelle nous allons
travailler. Initialement, ce curseur est positionné juste au-dessus de la première ligne d'un objet
ResultSet, donc le premier appel à la méthode next() déplace le curseur à la première ligne et en fait
la ligne courante. L'invocation successive de la méthode next() déplace le curseur vers le bas, ligne par
ligne. Notez qu'avec l'API JDBC 2.0, vous pouvez déplacer le curseur vers l'arrière, à une position
spécifique, et à une position relative à la ligne courante.

4.4.1. Exploiter et traiter le résultat récupéré

Nous utilisons la méthode getXXX() du type approprié pour accéder à une valeur dans chaque colonne.
Par exemple, la deuxième colonne de chaque ligne du resultset est NOM, qui contient une valeur de
type SQL VARCHAR. La méthode pour accéder à une valeur de type VARCHAR est getString(). La
quatrième colonne de chaque ligne contient une valeur de type SQL INT, et la méthode pour accéder
à ces valeurs est getint(). Le code qui suit accède aux valeurs contenues dans la ligne courante du
resultset et affiche la ligne avec le nom suivit de trois espaces puis l’Age. À chaque fois que la méthode
next() est invoquée, la ligne suivante devient la ligne courante, et la boucle continue jusqu'à ce qu'il
n'y aura plus de ligne dans le resultset.

String n=null;
int a = null;
String requete = "SELECT * FROM etudiant";
ResultSet rs = stmt.executeQuery(requete);
while( rs.next() ){
n = rs.getString("NOM"); // equivalente a : n = rs.getString(2);
a = rs.getint("age"); // equivalente a : a = rs.getint(4);
System.out.println(n + " " + a);
}

Apres avoir exécuté le code vous aurez le résultat comme montre le montre la figure ci-après :

10
A.DAIF
TP - Programmation WEB

11
A.DAIF

Vous aimerez peut-être aussi