Travaux Pratiques JDBC00
-
Upload
hamza-bazhar -
Category
Documents
-
view
213 -
download
0
Transcript of Travaux Pratiques JDBC00
-
8/18/2019 Travaux Pratiques JDBC00
1/4
1
TP #1 JDBC : LDD et LMD
Une société de vente par correspondance dispose d’une Base de Données (BD) dont le
schéma conceptuel est le suivant (diagramme des classes UML).
Les clients sont caractérisés par un code unique, une civilité (M, Mme, Melle), un nom et unprénom, leur sexe (H, F) et une adresse. Les commandes ont une référence unique, une date et
sont constituées de lignes de commandes numérotées de 1 à n. Chaque ligne concerne un
produit commandé.
On considère la base de données dont le schéma logique comporte les relations suivantes :
CLIENTS (ci, civilité, nom, prénom, sexe, adr_lib, adr_cp, adr_ville)
COMMANDES (ref, datec, montant, ci#)
LIGNES_CDES (numéro, qte, remise, ref#, cp#)
PRODUITS (cp, libelle, prix_u, catégorie)
1- Ordres LDD
Créez le fichier creabase.java permettant de générer le schéma de la base de données. Votre
classe devra générer les tables de la base de données (en supprimant le cas échéant les tables
existantes).Les ordres SQL devront être encapsulés par des objets de classe Statement.
2- Ordres LMD
Créez le fichier inserbase.java permettant de peupler la base de données. Votre classe effectuera
les insertions dans les tables de la base de données.
Les ordres SQL d’insertion devront être encapsulés par des objets de classe PreparedStatement .
On considère les commandes suivantes :
Mr Marc Assein 12/08/2005
10, rue de la forêt
31000 Toulouse
n°cde : 245
ligne code produit libelle quantité prix unitaire remise montant
1 139 TV Philips 70 cm UltraPlat 1 250,00 € _ 250,00 €
2 398 Lecteur DVD Sony Divx 1 120,00 € 10% 108,00 €
Total : 358,00 €dont TVA : 70,17 €
-
8/18/2019 Travaux Pratiques JDBC00
2/4
2
Mr Marc Assein 15/09/2005
10, rue de la forêt
31000 Toulouse
n°cde : 256
ligne code produit libelle quantité prix unitaire remise montant
1 52 DVD x5 4 35,00 € _ 140,00 €
Total : 140,00 €dont TVA : 27,44 € Melle Hillary Varien 15/09/2005
Place des incapables
31400 Toulouse
n°cde : 278
ligne code produit libelle quantité prix unitaire remise montant
1 139 TV Philips 70 cm UltraPlat 1 250,00 € 20% 200,00 €
2 52 DVD x5 4 35,00 € _ 140,00 €
3 137 Ampli Audio Pionner HX53 1 450,00 € _ 450,00 €
Total : 790,00 €
dont TVA : 154,84 €
TP #2 JDBC : Requêtes d’extraction (SELECT) et Curseurs
1- Curseur Statique
Créez le fichierconsult1.java
permettant d’afficher une commande passée par un client. Aprèsavoir saisi la référence de la commande, l’affichage produit sera le suivant :
N° Cde :...Date :... Nom :... Prénom :...
Numéro Libelle Qté PU Total
-------------------------------------------
... ... ... ... ...
... ... ... ... ...
... ... ... ... ...
-------------------------------------------
Total Cde :...
Les résultats des ordres SELECT d’extraction devront être encapsulés dans des curseurs (ResultSet)de type ResultSet.TYPE_FORWARD_ONLY et ResultSet.CONCUR_READ_ONLY .
2- Curseur Navigable Sensible
Créez le fichier consult2.java affichant le catalogue des produits par série de 2 produits ;
l’utilisateur appui sur une touche pour passer aux 2 produits suivants.
cp lib pu categ
--------------------------------------------
... ... ... ...
... ... ... ...
--------------------------------------------Appuyer ’Entrée’
-
8/18/2019 Travaux Pratiques JDBC00
3/4
3
Application
JAVA
J
D
BC
PL/SQL
ajout__client
…
TABLES
CLIENT(num_client, nom_client,…)
…
SERVEUR (BD centralisée)
O
R
AC
L
E
CLIENT
cp lib pu categ
--------------------------------------------
... ... ... ...
... ... ... ...
--------------------------------------------
Appuyer ’Entrée’
cp lib pu categ
--------------------------------------------
... ... ... ...
--------------------------------------------
Votre curseur (ResultSet) devra être navigable et sensible aux mises à jour de la base durant le
processus d’affichage des produits. Il devra être configuré par un tampon de 4 enregistrements
(setFetchSize).
Testez votre programme en effectuant :
1. aucune modification durant l’affichage des séries de produits, puis
2. en modifiant dans la base (UPDATE) après affichage de la première série de 2 produits, le 3
ème
etle 5ème
produit affichés lors du premier test.
Quelles constatations faites-vous ?
Proposez une solution pour les produits affichés soient toujours synchronisés avec les enregistrements
de la base (notamment le 3ème
produit modifié).
3- Curseur Modifiable
Créez le fichier consult3.java affichant le catalogue des produits et permettant d’ajouter un
produit, de supprimer un produit, et de modifier un produit. Ces ajouts, suppressions et modifications
doivent être réalisés directement au travers de votre curseur (ResultSet.CONCUR_UPDATABLE ).
Après chaque mise à jour, les produits doivent être réaffichés. Quelles constatations faites-vous (voir
l’annexe) ?
cp lib pu categ
--------------------------------------------
... ... ... ...
... ... ... ...
... ... ... ...
... ... ... ...
... ... ... ...
--------------------------------------------
Tapez ’a’jouter, ’s’upprimer, ’m’odifier, ’q’uitter.
TP #3 JDBC : Appels de procédures stockées
Une application Java peut accéder aux tables d’une BD relationnelle, mais peut également invoquer
des programmes stockés dans la base.
-
8/18/2019 Travaux Pratiques JDBC00
4/4
4
1- Mise en place des procédures stockées
(1) Exécuter le fichier gestbase.sql. Ce fichier contient la définition d’un paquetage regroupantdes procédures PL/SQL.
(2) Compilez le paquetage sous Oracle viaSQLPLUS
.
(3) Vérifiez le bon fonctionnement des procédures par des tests avec la commande SQL :EXECUTE nom_paq.nom_proc(valeurs_paramètres);
2- Invocation Java de procédures stockées
Développez un programme Java conforme à l’algorithme ci-dessous. Pensez à modifier les procédures
stockées avec retour d’un code d’erreur pour être exploité au niveau Java en affichant un message en
fonction du code retourné.
- Debut
- item_menu←1,- Tant que 1 ≤ item_menu ≤ 5 Faire
• Affichage menu1- ajouter client2- ajouter produit3- ajouter commande4- ajouter ligne commande5- afficher commande
• Saisir item_menu,
• Si item_menu = 1 Alors Saisir paramètres,
Appel procédure Ajout_Client,• Si item_menu = 2 Alors
Saisir paramètres, Appel procédure Ajout_Produit,
• Si item_menu = 3 Alors Saisir paramètres, Appel procédure Ajout_Commande,
encore←VRAI, Tant que (encore) Faire
• Saisir paramètres,
• Appel procédure Ajout_Ligne_Cde,
• Si item_menu = 4 Alors Saisir paramètres, Appel procédure Ajout_Ligne_Cde,
• Si item_menu = 5 Alors Saisir paramètre, Afficher commande (équiv. proc. Libelle_Cde),
- Fin.
Notez que l’affichage de la commande (item_menu = 5) n’est pas réalisée par appel d’une procédure
stockée. Vous devez utiliser des requêtes d’extraction pour obtenir les données à afficher.