Licence profesionnelle TAI
(Technologie des Applications Internet)
TD de Programmation Orientée Objets
Introduction au JDBC
Considérons le scénario suivant :
Il s'agit de suivre la consommation en café des programmeurs d'un projet. Un rapport hebdomadaire est effectué par le chef de projet qui relève chaque jour le nombre de tasses de café consommées par les différents programmeurs. Ces informations sont stockées dans un SGBD dans une table dont la structure est la suivante :
Programmeur | Jour | NbTasses |
---|---|---|
Gilbert | Mon | 1 |
Wally | Mon | 2 |
Edgar | Tue | 8 |
Wally | Tue | 2 |
Eugene | Tue | 3 |
Josephine | Wed | 2 |
Eugene | Thu | 3 |
Gilbert | Thu | 1 |
Clarence | Fri | 9 |
Edgar | Fri | 3 |
Josephine | Fri | 4 |
Le SGBD utilisé pour ce TP, sera Oracle installé sur le serveur hoff. Pour pouvoir dialoguer depuis vos programme Java avec la base Oracle vous aurez besoin du driver oracle.jdbc.driver.OracleDriver. Celui se trouve dans le fichier classes12.zip (1892 Ko) que vous devrez rammener sur votre compte (SANS LE "DEZIPPER" !) et intégrer dans votre classpath lors des exécutions. Ce fichier contient le bytecode des différentes classes du driver jdbc pour la base de données Oracle (équivalent d'un fichier jar).
Pour lancer une exécution depuis la ligne de commandes
en supposant que le le fichier classes12.zip
est dans le même répertoire que votre application AppliJDBC.java
java -cp .;classes12.zip AppliJDBC
sur PC
ou
java -cp .:classes12.zip
AppliJDBC sur UNIX
Pour intégrer classes12.zip dans votre "classpath" sous NetBeans, procéder comme suit :
Effectuer un clic droit sur le projet et sélectionner l'item Properties dans le menu contextuel. Ensuite dans la fenêtre Project Properties sélectionner la propriété Running Project puis ajouter au classpath d'éxécution du projet le fichier classes12.zip des classes du driver (bouton Add JAR/Folader...)
Avec l'explorateur de fichiers sélectionner le fichier classes12.zip et valider.
Pour vous aider à réaliser ce TP, un squelette de l'application vous est fourni dans le fichier DemoJDBC.java. Téléchargez sur votre compte ce squelette de programme et complétez le au fur et à mesure des différents exercices proposés dans ce TP.
Compléter le squelette du programme DemoJDBC afin de réaliser les opérations précédentes : - ouverture d'une connexion à la base Oracle Compiler et tester votre programe. Vérifier depuis Unix (avec sqlplus) que la table a été correctement créée. |
Pour effectuer ces opérations suivre les étapes suivantes :
DriverManager
demander une connexion à une URL
identifiant la base de données Oracle sur hoff.
Statement
à l'objet Connection:Ensuite exécuter l'instruction SQL suivante pour créer
la table nommée JoltData
.
CREATE TABLE JoltData ( Programmeur VARCHAR (32), Jour CHAR (3), NbTasses INTEGER)Attention : le ';' utilisé dans sqlplus ne doit pas être mis à la fin des chaînes de commandes SQL qui sont transmises via les méthodes excuteQuery, excecuteUpdate ou execute de la classe Statement
INSERT INTO JoltData VALUES ('Gilbert', 'Mon', 1) INSERT INTO JoltData VALUES ('Wally', 'Mon', 2) INSERT INTO JoltData VALUES ('Edgar', 'Tue', 8) ...
Pour retrouver de l'information dans la BD, utiliser des instructions SQL
SELECT
au travers de la méthode JAVA Statement.executeQuery
qui retourne des résultats sous la forme de lignes de données
dans un objet ResultSet
. Les résultats sont examinés
ligne par ligne en utilisant les méthode ResultSet.next()
et ResultSet.getXXX
().
a) Modifier le programme DemoJDBC afin d'afficher :
|
b) Modifier le programme DemoJDBC afin de calculer et afficher le nombre total de tasses de café vendues en une semaine. (essayez de penser à une commande SQL, simplifiant au maximum cette tâche). |
c) Modifier le programme DemoJDBC afin de calculer pour un programmeur donné le nombre total de tasses de café consommées. |
Occasionellement vous pourrez avoir besoin d'obtenir de la méta information
au sujet des résultats d'une requête. Par exemple l'instruction
SQL
SELECT * FROM JoltData
retournera un ResultSet
avec le même nombre de colonnes
et de lignes que la table, JoltData
. Par contre la requête
SELECT Programmeur FROM JolData
produit une table à une seule colonne ne contenant que les noms des programmeurs.
Auusi, si vous ne savez pas quelles colonnes seront présentes dans le
résultat d'une requête vous devez utiliser les méta-données
au travers de la classse ResultSetMetaData
.
Modifier le programme DemoJDBC afin d 'exécuter une requête libre définie par une chaîne donnée au clavier et selon la nature de la requête d'afficher les informations suivantes :
|
Compléter le squelette du programme DemoJDBC afin d'initialiser la table à partir des données contenues dans un fichier texte : Les valeurs utilisées pour initialiser la table pourront être stockées dans un fichier texte (une ligne du fichier correspondant à un enregistrement dans la table, les valeurs des différentes données étant séparées par un espace). Le programme LectureFichier vous montre un exemple de code qui lit un tel fichier texte. test.data est un fichier de données permettant de le tester. Adapter ce programme pour initialiser la table. On utilisera un PreparedStatement. Vérifier depuis Unix (avec sqlplus) que la table a été correctement créée.
|
Il est dommage de "mettre en dur" dans le programme les paramètres de configuration de la base donnée (nom du driver, url de connexion). En général, il vaut mieux isoler ces paramètres dans un fichier de configuration afin de pouvoir les modifier facilement et ne pas avoir à modifier et recompiler le code Java en cas de modification de la base de données.
Modifiez votre programme afin qu'il puisse lire les chaînes décrivant la BD dans un fichier de propriétés (voir la classe java.util.Properties)