la page du cours


Introduction au mode application : accès à une base de données par programme

Le matériel BD pour faire cette feuille est celui de la feuille "Premiers pas". Il n'est pas nécessaire d'avoir terminé la feuille "Requêtes" pour cela. Une bonne allure consiste à faire la première partie en une séance environ. La seconde sera pour une prochaine séance.

Exemple de programme JDBC pour le TD

Une fonction Java pour lire au clavier

On considère votre table de billets avec client et destination (par exemple celle de la feuille "Premiers pas").

  1. Remplacez dans le programme exemple 'waller' par vos propres login et password. Que se passe-t-il sinon ?

  2. Ecrivez la méthode effectuant l'insertion d'un n-uplet constant (par exemple ('Jules', 'Saint Lucien')). Comment vérifier sans écrire pour l'instant de fonction d'interrogation ? Faites-le.

  3. Même question, mais avec des valeurs demandées à l'utilisateur.

  4. Même question pour une interrogation elle aussi paramétrée, en récupérant un seul n-uplet pour commencer dans cette question, par exemple le premier client pour Saint Trop par ordre alphabétique.

  5. On va écrire notre propre fonction de connexion, utilisable par n'importe quel utilisaeur Oracle. Faites échouer sciemment la connexion (comment ?). Quel est le message d'erreur ? (On gérera ce type de problème bientôt.)

  6. Même chose que dans l'exercice 4 ci-dessus, mais traitez le cas général, en affichant tous les n-uplets. N'oubliez pas le cas où aucun n-uplet n'est récupéré.

  7. Mêmes questions avec tous les ordres vus en interactif dans la feuille "Premiers pas".

Mode application : construction dynamique d'ordres SQL

Nous avons vu ci-dessus comment écrire des programmes Java effectuant sur une base les ordres SQL suivants : mises à jour du schéma ou de l'instance, requêtes, ces deux derniers cas pouvant être paramétrés ou non par des valeurs dans les conditions de sélection, les insertions ou la clause d'affectation des modifications (update). Assurez-vous que vous avez bien traité tous ces cas avant de passer aux manipulations ci-dessous, et par exemple regroupez-les dans un unique programme dans lequel un menu donne le choix parmi tous ces ordres, chacun codé dans une fonction. Vérifiez à chaque fois immédiatement en gardant une session SQL*Plus ouverte en permanence.

Dans cette partie, nous allons simplement généraliser les manipulations ci-dessus en construisant nos ordres SQL au cours de l'exécution du programme, par concaténation de chaînes de caractères.

  1. Ecrire une fonction, à insérer dans votre menu ci-dessus, qui effectue une modification update t set a = 1, où les noms de la table et de la colonne sont à saisir à runtime (dans cet exercice on ne considérera pas de condition de sélection ni de paramètre).
  2. Ecrire une fonction qui effectue une sélection dans votre table Voyage, avec une clause where saisie dynamiquement. On supposera que cette condition contient exactement deux paramètres : un entier et une chaîne.
  3. Nous ne le ferons pas en TD (pour cause de priorités), mais dans le cas général de construction dynamique pour les ordres de manipulation de l'instance, on saisit : nom de table, colonnes en nombre quelconque, condition de sélection et clause d'affectation avec un nombre quelconque de paramètres.

©S. Abiteboul, E. Waller, B. Amann