TME JDBC : Accès à un SGBD depuis Java
Préparation
- lire le sujet (ou voir poly). Seulement la partie JDBC (pas JSP)
- lire les API (choisir le package java.sql, dans le cadre en haut à gauche)
- installer les fichiers : tar zxvf $BD_TOOL/jdbc-etu.tgz
ceux qui utilisent Eclipse doivent référencer le jar /Infos/bd/client10/ojdbc14.jar dans leur projet.
- cliquer avec le bouton droit sur le nom de votre projet, puis choisir Propriétés
- Sélectionner Java build Path, puis l'onglet Librairies
- Bouton Add External Jars, sélectionner, depuis la racine /, le fichier /Infos/bd/client10/ojdbc14.jar
- Ok
Séance 1
- installer l'environnement de travail (voir le poly, étape 1 uniquement)
- Commencer l'étape 1 du sujet: répondre aux questions a) à d) dans le fichier rapport.txt
Dans la question 1.1 : compléter les lignes commentaires:
- Si nécessaire, ajuster les informations de connexion :
String server = "oracle.ufr-info-p6.jussieu.fr"; String port = "1521"; String database = "ora10";
Question fréquente concernant la compilation java: Comment éviter les warning du compilateur concernant le jeu de caractères UTF-8 ?
- afin de pouvoir compiler des programmes java contenant des caractères accentués, le jeu de caractères par défaut doit être européen (ISO-8859-1) :
export LC_CTYPE="fr_FR" ou export LC_ALL="fr_FR"
- Vérification du jeu avec la commande
locale charmap
Question 2 : MaxPrime2. Définir une requête paramétrée :
- la requête est une chaîne de caractères contenant un point d'interrogation ? pour chaque paramètre
- Exemple "select * from Joueur2 where annaiss = ? "
- voir l'exemple dans la documentation de l'interface PreparedStatement
Questions fréquentes concernant MaxPrime2:
Comment comparer 2 chaînes de caractères a et b ?
- utiliser la méthode : a.equals(b)
- l'opérateur a==b ne compare pas le contenu des chaînes de caractères mais leur identifiant d'objet.
Comment convertir une chaîne de caractères en un nombre entier ?
- int n = Integer.parseInt(chaine);
Questions 3 : Requête générique
- L'exécution du programme GeneriqueHTML doit produire ce résultat
- attention, le paramètre (la requête) doit être entre " "
Séance 2
- Finir la question 3
Question 4: Schéma d'une relation.
- le pattern pour désigner n'importe quelle chaine de caractère en SQL est "%"
- Question 5
Ajuster l'ULR d'accès à la 2eme base
- String url2 = "jdbc:oracle:thin:@oracle2.ufr-info-p6.jussieu.fr:1521:ora2"; // base des sponsors
- jointure inter-bases : créer un PreparedStatement sur les Sponsors, dont le paramètre est l'attribut de jointure.
- jointure par boucles imbriquées : attention, le ResultSet sur les sponsor (boucle interne) doit être de type scrollable. Voir le paramètre resultSetType de la méthode Connection.createStatement. Voir aussi le champ ResultSet.TYPE_SCROLL_INSENSITIVE.
Séance 3
Finir la question 5
- jointure par tri puis fusion. Etendre l'algorithme pour traiter le cas d'une équi-jointure entre 2 attributs non uniques (i.e. 2 clés étrangères) et un ResultSet scrollable.
- jointure par transfert de clés (semi-jointure).
- (facultatif) implémenter d'autres algorithmes de jointure, tout en utilisant JDBC.
Documentation diverse
- Algorithmes de jointure (anglais)
- Liens externes : un cours HTML (université de Nice), un autre manuel HTML, un cours java, Java 1.5 API, ...
retour vers: TmeJSP, LesTravauxDirigés, LesCours, l'Accueil.