Travaux Pratiques JDBC00

download Travaux Pratiques JDBC00

of 4

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.