Académique Documents
Professionnel Documents
Culture Documents
Objectifs
JDBC est l'API de base pour la persistance des données d'un programme Java dans une base de
données relationnelle. Ce TP rappelle, dans un premier temps, cette API et implémente ses
méthodes pour accéder à une table dans une base de données prédéfinie via des instructions
simples. Dans un second lieu, il utilise des instructions paramétrées qui réduisent le risque de
l’injection SQL.
Environnements requis
4. Afin de faire quelques tests dans le présent TP, insérez les lignes suivantes dans la table
« Vehicule » :
INSERT INTO `Incident`.`Vehicule` (`code_interne`, `immatriculation`,
`dateMiseEnCirculation`) VALUES ('124', 'VV-CC-JJ', '2012-12-26 00:00:00');
INSERT INTO `Incident`.`Vehicule` (`code_interne`, `immatriculation`,
`dateMiseEnCirculation`) VALUES ('114', 'AA-BB-CC', '2014-12-26 00:00:00');
INSERT INTO `Incident`.`Vehicule` (`code_interne`, `immatriculation`,
`dateMiseEnCirculation`) VALUES ('120', 'DD-RB-HC', '2016-10-07 00:00:00');
INSERT INTO `Incident`.`Vehicule` (`code_interne`, `immatriculation`,
`dateMiseEnCirculation`) VALUES ('120', 'DD-RB-HC', '2018-11-09 00:00:00');
On voudrait exploiter la table « Vehicule » à travers une classe Java utilisant JDBC.
Clic droit sur le projet -- > Properties--> build path -- > configure build path
Dans l’onglet Libraries cliquez sur Add External Jar et Selectionnez le jar
correspondant.
3. Créez le package « persistance»
4. A l’intérieur du package, créez la classe « TestJDBC.java » dont le contenu est :
5. Créez une méthode qui permet de lister tous les véhicules, dont le corps est :
} // try
}
Testez le résultat dans le main dans la partie : /*Appel des méthodes*/
6. Créez une méthode qui a comme arguments : code_interne, immatriculation,
dateMiseEnCirculation et qui permet d’insérer le véhicule (1998, HH-KK-LL, 2019-09-01)
dans la table en utilisant une instruction sql simple. Testez la dans le main dans la partie :
/*Appel des méthodes*/en utilisant le jeu de données suivant :
7. Créez une méthode qui permet de lister un véhicule dont le code interne est mentionné
par l’utilisateur. Testez la dans le main dans la partie : /*Appel des méthodes*/
Indications :
System.out.println("Statement listerVehicule...");
Scanner sc = new Scanner(System.in);
System.out.println("Veuillez saisir le code interne :");
String code_interne = sc.nextLine();
try {
stmt = TestJDBC.conn.createStatement();
String sql;
sql = "select id, code_interne, immatriculation,
dateMiseEnCirculation from Vehicule where code_interne = "
+ code_interne + ";";
System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql);
8. On suppose dans cette question que les données d’un véhicule ne sont connues que par
l’utilisateur (chauffeur par ex) qui connaît le code interne du véhicule qui le concerne.
Normalement, il peut connaître les données du véhicule en exécutant la requête de la
question 7.
A travers l’exécution de la question 7, un chauffeur a réussi de lister tous les véhicules.
Comment a-t-il pu faire ?
9. On voudrait dans cette question faire une mise à jour d’une immatriculation d’un véhicule
en saisissant le code interne . Ecrivez la méthode (qui n’a pas d’arguments) qui permet de
la faire et testez la dans le main dans la partie : /*Appel des méthodes*/
10. Un utilisateur a pu modifier à travers la méthode de la question 9 toutes les
immatriculations. Comment a t il fait ? Comparez l’impact de cette manœuvre par rapport
à la manœuvre de la question 8.
11. Dans cette question et à l’instar des questions précédentes, il est question d’écrire une
méthode qui supprime un véhicule dont le code est saisi par l’utilisateur.
12. Un utilisateur a réussi à supprimer toutes les données juste grâce à la question 11. Simulez
sa saisie. Comparez l’impact de sa manœuvre par rapport aux questions 8 et 10.
13. Quelles conclusions peut-on tirer de ces exemples.