Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
site:enseignement:licence:3i009:tme_jdbc_h2 [04/12/2020 14:14] amine [Préparation du TME] |
site:enseignement:licence:3i009:tme_jdbc_h2 [10/12/2020 12:19] (Version actuelle) amine [Exercice 1 : Requêtes fixes] |
||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
====== TME 8 JDBC (H2) ====== | ====== TME 8 JDBC (H2) ====== | ||
- | **En construction** | ||
Consulter la brève introduction à JDBC vue en cours {{:site:enseignement:licence:3i009:i3009coursjdbc.pdf|pdf}} | Consulter la brève introduction à JDBC vue en cours {{:site:enseignement:licence:3i009:i3009coursjdbc.pdf|pdf}} | ||
Ligne 16: | Ligne 15: | ||
* **JOUEUR**(__NUJOUEUR__, NOM, PRENOM, ANNAISS, NATIONALITE) | * **JOUEUR**(__NUJOUEUR__, NOM, PRENOM, ANNAISS, NATIONALITE) | ||
- | * **GAIN**(__NUJOUEUR, LIEUTOURNOI, ANNEE__, PRIME, SPONSOR) | + | * **GAIN**(__NUJOUEUR, LIEUTOURNOI, ANNEE__, PRIME, NOMSPONSOR) |
* **RENCONTRE**(NUGAGNANT, __NUPERDANT, LIEUTOURNOI, ANNEE__) | * **RENCONTRE**(NUGAGNANT, __NUPERDANT, LIEUTOURNOI, ANNEE__) | ||
Ligne 29: | Ligne 28: | ||
La réalisation de ce TME nécessite des connaissances de base en compilation de programmes Java. | La réalisation de ce TME nécessite des connaissances de base en compilation de programmes Java. | ||
+ | |||
Pour compiler un fichier source //Fichier.java// en utilisant une librairie externe //lib.jar// taper | Pour compiler un fichier source //Fichier.java// en utilisant une librairie externe //lib.jar// taper | ||
- | <code> javac -cp lib.jar: Fichier.java </code> | + | |
- | Cette commande va créer un binaire appelé //Fichier.class//. | + | Linux et Mac: |
+ | <code> javac -cp .:lib.jar Fichier.java </code> | ||
+ | |||
+ | Windows: | ||
+ | <code> javac -cp .;lib.jar Fichier.java </code> | ||
+ | |||
+ | <showif isloggedin> | ||
+ | <fc #008000>Attention:</fc> | ||
+ | </showif> | ||
+ | |||
+ | |||
+ | Cette commande va créer un binaire appelé //Fichier.class// (et //MaClasse.java//). | ||
Pour exécuter le programme taper | Pour exécuter le programme taper | ||
- | <code> java -cp lib.jar: Fichier </code> | + | |
+ | Linux et Mac: | ||
+ | <code> java -cp .:lib.jar Fichier </code> | ||
+ | |||
+ | Windows: | ||
+ | <code> java -cp .;lib.jar Fichier </code> | ||
**Remarques** | **Remarques** | ||
- | * Afin d'éviter les erreurs de compilation dues à l'utilisation de caractères accentués dans les fichiers sources, compiler ces derniers en tapant <code>javac -encoding UTF-8 Fichier.java</code> | + | * Afin d'éviter les erreurs de compilation dues à l'utilisation de caractères accentués dans les fichiers sources, compiler ces derniers en tapant |
+ | <code>javac -encoding UTF-8 Fichier.java</code> | ||
* Les étudiants souhaitant utiliser l'IDE Eclipse peuvent se réferer à la rubrique **Configuration d'Eclipse** à la fin de la page. A défaut, utiliser un éditeur texte qui reconnait la syntaxe Java (tel que emacs). | * Les étudiants souhaitant utiliser l'IDE Eclipse peuvent se réferer à la rubrique **Configuration d'Eclipse** à la fin de la page. A défaut, utiliser un éditeur texte qui reconnait la syntaxe Java (tel que emacs). | ||
Ligne 45: | Ligne 62: | ||
*/ | */ | ||
- | Télécharger et l'archive contenant les sources en tapant | + | Télécharger l'archive {{ :site:enseignement:licence:3i009:tmejdbc-h2.zip |TMEJDBC-H2}} contenant les sources puis décompresser et extraire son contenu avec la commande zip ou tar. |
+ | AVec tar: | ||
<code bash> | <code bash> | ||
- | tar xzf TMEJDBC-H2.tgz | + | tar xzf TMEJDBC-H2.zip |
cd TMEJDBC-H2 | cd TMEJDBC-H2 | ||
</code> | </code> | ||
+ | |||
+ | L'archive contient : | ||
+ | * h2-1.4.200.jar qui permet de lancer le serveur et qui est utile pour le compilation des sources java | ||
+ | * Les squelettes java à modifier pour répondre aux questions (les fichiers *.java) | ||
+ | * Les scripts de création et de remplissage de la base tennis (les fichiers *.sql) | ||
+ | |||
Lancer le serveur en tapant | Lancer le serveur en tapant | ||
<code bash> | <code bash> | ||
- | java -cp h2-1.4.200.jar org.h2.tools.Server -tcp -tcpPort 9093 & | + | java -cp h2-1.4.200.jar org.h2.tools.Server -ifNotExists -tcp -tcpPort 9093 & |
</code> | </code> | ||
==== Chargement des données ==== | ==== Chargement des données ==== | ||
+ | |||
+ | |||
+ | <showif isloggedin> | ||
+ | <fc #008000>La base H2 ~/test n'existe pas par défaut. Il faut la créer d'abord en utilisant le menu du serveur (icone dans la barre). J'ai créé une base par défaut jdbc (user: jdbc, password: jdbc) qui est inclus dans le fichier jar.</fc> | ||
+ | </showif> | ||
+ | |||
+ | Il existe déjà une base par défaut H2/jdbc (user: jdbc, password: jdbc). | ||
Pour charger les données, taper les commandes suivantes : | Pour charger les données, taper les commandes suivantes : | ||
+ | |||
+ | <showif isloggedin> | ||
+ | <fc #008000>Sous windows java -cp h2*.jar ne marche pas. J'ai remplacé par le chemin exact.</fc> | ||
+ | </showif> | ||
+ | |||
+ | Linux et Mac: | ||
<code bash> | <code bash> | ||
- | java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -script creations.sql | + | java -cp .:h2-1.4.200.jar org.h2.tools.RunScript -url jdbc:h2:./H2/jdbc -user jdbc -password jdbc -script creations.sql |
- | java -cp h2*.jar org.h2.tools.RunScript -url jdbc:h2:~/test -script insertions.sql | + | java -cp .:h2-1.4.200.jar org.h2.tools.RunScript -url jdbc:h2:./H2/jdbc -user jdbc -password jdbc -script insertions.sql |
</code> | </code> | ||
+ | |||
+ | Windows: | ||
+ | |||
+ | <code bash> | ||
+ | java -cp .;h2-1.4.200.jar org.h2.tools.RunScript -url jdbc:h2:./H2/jdbc -user jdbc -password jdbc -script creations.sql | ||
+ | java -cp .;h2-1.4.200.jar org.h2.tools.RunScript -url jdbc:h2:./H2/jdbc -user jdbc -password jdbc -script insertions.sql | ||
+ | </code> | ||
+ | |||
+ | Vous pouvez créer une autre base en utilisant le menu du serveur H2 accessible à partir de votre barre de menu en bas de l'ecran. Dans ce cas, il faudra aussi changer le fichier Connexion.java. | ||
==== Tester la connexion JDBC ==== | ==== Tester la connexion JDBC ==== | ||
Ligne 74: | Ligne 120: | ||
Compiler puis exécuter //Tmejdbc.java// en tapant | Compiler puis exécuter //Tmejdbc.java// en tapant | ||
+ | Linux et Mac (compilation): | ||
<code bash> | <code bash> | ||
- | javac -cp h2-1.4.200.jar: Tmejdbc.java | + | javac -cp .:h2-1.4.200.jar Tmejdbc.java |
- | java -cp h2-1.4.200.jar: Tmejdbc | + | </code> |
+ | Windows (compilation): | ||
+ | <code bash> | ||
+ | javac -cp .;h2-1.4.200.jar Tmejdbc.java | ||
+ | </code> | ||
+ | |||
+ | |||
+ | Mac et Linux (exécution): | ||
+ | <code bash> | ||
+ | java -cp .:h2-1.4.200.jar Tmejdbc | ||
+ | </code> | ||
+ | Windows (exécution): | ||
+ | <code bash> | ||
+ | java -cp .;h2-1.4.200.jar Tmejdbc | ||
</code> | </code> | ||
Ligne 108: | Ligne 168: | ||
pour cette question, rajouter dans //Tmejdbc.java// les deux lignes suivantes qui permettent d'instancier | pour cette question, rajouter dans //Tmejdbc.java// les deux lignes suivantes qui permettent d'instancier | ||
un objet de la classe //afficherJoueurs// et d'exécuter sa méthode //executer()//. | un objet de la classe //afficherJoueurs// et d'exécuter sa méthode //executer()//. | ||
+ | |||
<code java> | <code java> | ||
Ligne 149: | Ligne 210: | ||
</code> | </code> | ||
</showif> | </showif> | ||
+ | |||
+ | Il faut recompiler Tmejdbc.java et afficherJoueurs.java: | ||
+ | |||
+ | Linux et Mac: | ||
+ | <code bash> | ||
+ | javac -cp .:h2-1.4.200.jar Tmejdbc.java afficherJoueurs.java | ||
+ | </code> | ||
+ | |||
+ | Windows: | ||
+ | <code bash> | ||
+ | javac -cp .;h2-1.4.200.jar Tmejdbc.java afficherJoueurs.java | ||
+ | </code> | ||
+ | et ensuite exécuter le programme principal: | ||
+ | Mac et Linux: | ||
+ | <code bash> | ||
+ | java -cp .:h2-1.4.200.jar Tmejdbc | ||
+ | </code> | ||
+ | <code bash> | ||
+ | java -cp .;h2-1.4.200.jar Tmejdbc | ||
+ | </code> | ||
+ | |||
+ | |||
+ | |||
2- Modifier //afficherDuels.java// pour afficher les joueurs qui se sont affrontés à Roland Garros en 1994. | 2- Modifier //afficherDuels.java// pour afficher les joueurs qui se sont affrontés à Roland Garros en 1994. | ||
Ligne 180: | Ligne 264: | ||
public class sponsorPrimes { | public class sponsorPrimes { | ||
public void executer(Connexion conn) { | public void executer(Connexion conn) { | ||
- | String requete = "select Sponsor, max(Prime) as max_prime from Gain group by Sponsor order by max_prime desc "; | + | String requete = "select nomsponsor, max(Prime) as max_prime from Gain group by nomsponsor order by max_prime desc "; |
try { | try { | ||
Statement lecture = conn.connexion.createStatement(); | Statement lecture = conn.connexion.createStatement(); | ||
Ligne 492: | Ligne 576: | ||
- | |||
- | ===== Configuration d'Eclipse ===== | ||
- | **Attention** cette procédure est réservée à ceux qui maîtrisent l'IDE Eclipse. | ||
- | |||
- | L'IDE Eclipse est installé sur les machines de TME. | ||
- | (Un rapide tutoriel permettant de se familiariser avec les principales fonctionalités d'Eclipse peut etre consulté | ||
- | à partir de ce [[http://help.eclipse.org/mars/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2FgettingStarted%2Fqs-3.htm|lien]]) | ||
- | |||
- | Pour l'utiliser, commencer par ouvrir votre éditeur en tapant | ||
- | <code bash> | ||
- | eclipse & | ||
- | </code> | ||
- | puis suivre les étapes ci-dessous : | ||
- | - Dans votre Terminal, désarchiver TMEJDBC.tgz en tapant <code bash> tar xzf /Infos/bd/public/TMEJDBC.tgz</code> | ||
- | - Dans Eclipse, utiliser le menu contextuel pour créer un nouveau Projet. Décocher la case "use default location" (ou "sélectionner emplacement par défaut" en français) et cliquer sur "Browse" (ou "Parcourir") pour sélectionner l'emplacement du répertoire TMEJDBC. Cliquer sur "Finish" (ou "Terminer") pour finir.{{:site:enseignement:licence:3i009:jdbc_step0.png?direct&200|}}{{:site:enseignement:licence:3i009:eclipse-proj.png?direct&200|}} | ||
- | - - Rafraîchir l'éditeur en avec la touche F5 du clavier |