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:53] amine |
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(); |