[PROJET BIBLIOTHEQUE GUIDE DE DEMARRAGE] v2.5

Documents pareils
OpenPaaS Le réseau social d'entreprise

Java DataBaseConnectivity

Introduction à JDBC. Accès aux bases de données en Java

TP Programmation Java / JDBC / Oracle

Connexion à SQL Server 2005 à partir du serveur d application SJSAS 9 Utilisation d une interface JDBC

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

Olivier Mondet

Accès aux bases de données

Création et Gestion des tables

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Encryptions, compression et partitionnement des données

Modélisation et Gestion des bases de données avec mysql workbench

Introduction à Eclipse

CREATION WEB DYNAMIQUE

Notes de cours : bases de données distribuées et repliquées

TP Contraintes - Triggers

Application web de gestion de comptes en banques

Les BASES de DONNEES dans WampServer

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Tutoriel d installation de Hibernate avec Eclipse

Le langage SQL (première partie) c Olivier Caron

TP1 : Initiation à Java et Eclipse

Bases de Données relationnelles et leurs systèmes de Gestion

La base de données XML exist. A. Belaïd

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Pratique et administration des systèmes

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

PHP 5. La base de données MySql. A. Belaïd 1

Configurer la supervision pour une base MS SQL Server Viadéis Services

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Tutoriel de formation SurveyMonkey

Mysql. Les requêtes préparées Prepared statements

Construire une base de donnée pour bibliothèque

Bases de données élémentaires Maude Manouvrier

BIRT (Business Intelligence and Reporting Tools)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

1. Base de données SQLite

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Cliquez sur le site que vous souhaitez consulter, il s affichera directement dans le navigateur.

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Approche Contract First

Cours Bases de données 2ème année IUT

PHP 4 PARTIE : BASE DE DONNEES

Guide d installation de MySQL

Les bases de données

Programmation d application Bases de données avec Java

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Système Normalisé de Gestion des Bibliothèques -SYNGEB : version Réseau-

Tutorial sur SQL Server 2000

Objectifs du TP : Initiation à Access

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Java et les bases de données

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

I. MySQL : Serveur et SGBD

Création d un service web avec NetBeans 5.5 et SJAS 9

< Atelier 1 /> Démarrer une application web

Compte Rendu d intégration d application

Installer Enterprise Miner 5.1 en SAS environnement Windows

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

TD/TP 1 Introduction au SDK d Android

Pour les débutants. langage de définition des données

Eclipse atelier Java

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

MODE OPERATOIRE OPENOFFICE BASE

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Ecran principal à l ouverture du logiciel

Sélection du contrôleur

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

La Clé informatique. Formation Excel XP Aide-mémoire

Déploiement de SAS Foundation

Votre premier projet Android

TP3 : Creation de tables 1 seance

OpenOffice Base Gestionnaire de Base de Données

Installation SQL Server 2005 Express sur le serveur

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Introduction aux outils BI de SQL Server Tutoriel sur SQL Server Integration Services (SSIS)

La base de données dans ArtemiS SUITE

Bases de données avancées

VXPERT SYSTEMES. CITRIX NETSCALER 10.1 et SMS PASSCODE 6.2. Guide d installation et de configuration pour Xenapp 6.5 avec SMS PASSCODE 6.

Raja Bases de données distribuées A Lire - Tutoriel

TP1 - Prise en main de l environnement Unix.

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

Compte-rendu de projet de Système de gestion de base de données

Gestion de stock pour un magasin

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

Un outil open source de gestion de bibliographies

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Transcription:

PROJET BIBLIOTHEQUE GUIDE DE DEMARRAGE I. SOMMAIRE II. Objectifs du document... 1 III. Installation de l environnement... 2 A. Lancement de la machine virtuelle... 2 B. Premier lancement du projet... 2 C. Sauvegarde de votre travail... 3 IV. Présentation/Architecture de l application... 4 A. Organisation du projet... 4 B. Architecture de l application... 5 V. Guide pour débuter le projet... 6 A. Création de votre base de données... 6 B. Exemple de fonctionnalité : la liste de tous les livres... 8 C. Memento Java Database Connectivity (JDBC)... 9 D. Compléments d information essentiels à lire pour vous faciliter la vie!... 10 II. OBJECTIFS DU DOCUMENT IMPORTANT! Ce document est une aide pour commencer votre projet. Toutes les informations nécessaires à la réalisation de votre projet ne sont cependant pas présentes : des liens et des indications sont donnés mais vous devez rechercher sur internet les informations complémentaires qui vous sont nécessaires! Merci de communiquer toute correction ou remarque sur ce document à laurent.brisson@telecom-bretagne.eu Laurent BRISSON et Philippe TANGUY 1

III. INSTALLATION DE L ENVIRONNEMENT A. LANCEMENT DE LA MACHINE VIRTUELLE L ensemble des outils nécessaires est rassemblé au sein d une machine virtuelle. Pour utiliser cet environnement suivez les étapes suivantes : 1. Double-cliquez sur l icône «Lancement de machines virtuelles» 2. Choisissez la machine virtuelle «UBUNTU14_BD_PROG» a. Identifiant : user b. Mot de passe : usr 3. Pour passer en plein écran utilisez le raccourci clavier suivant : CTRL+ALT+ENTER Sur le bureau vous trouverez des raccourcis vers les applications suivantes : Eclipse - Indigo : l un des environnements de développement open source Java le plus utilisé. Cette version (3.7) contient un ensemble de plug-ins qui permettent le développement d applications Web en Java. Cet environnement contient aussi le moteur de servlets/jsp Tomcat utilisé dans ce projet. Il s agit d un serveur Web capable d exécuter les fichiers JSP qui génèrent dynamiquement le contenu Web de l application. Le serveur Tomcat se lance à partir de l interface d Eclipse (voir plus loin). Pour plus d informations : http://www.eclipse.org/ et http://tomcat.apache.org/ ADS 4.7 : un logiciel permettant d utiliser une base de données. Il est déjà pré-configuré pour accéder à la base PostgreSQL que vous utiliserez pour le projet. Vous pouvez l utiliser pour écrire vos scripts SQL (il possède un colorateur syntaxique bien pratique). B. PREMIER LANCEMENT DU PROJET Afin de vérifier que tout fonctionne correctement, suivez les étapes suivantes : Double-cliquez sur l icône «Eclipse» Choisissez le menu File > Import Choisissez «Existing project» puis NEXT Choisissez «Root Directory» puis BROWSE pour sélectionner le répertoire /home/usr/workspace/bibliotheque puis cliquez sur FINISH Sous Eclipse, dans la fenêtre bas-droite sur l onglet «Servers» faites un clic-droit sur «Tomcat v7» et choisissez «Add and remove» Sélectionnez «bibliotheque» puis Add > et cliquez sur FINISH. Sélectionnez «Tomcat v7» puis cliquez sur l icône «Start Server» présente à droite de la barre avec les onglets. Sous Firefox, cliquez sur le raccourci «Projet Bibliothèque» et vous devriez arriver sur la page d accueil de l application. Actuellement seule la fonctionnalité pour lister les livres fonctionne. Laurent BRISSON et Philippe TANGUY 2

C. SAUVEGARDE DE VOTRE TRAVAIL Afin de sauvegarder votre travail vous devez copier sur un espace différence l image virtuelle qui est stockée localement dans le répertoire /users/local/votre_login /Ubuntu_BD_PROG. IMPORTANT! Vous devez prendre soin de bien sauvegarder votre travail au sein de la machine virtuelle puis de l éteindre complètement avant de copier l image virtuelle! 1. SAUVEGARDE POUR TRAVAILLER DANS LES SALLES DE TP Cliquez sur le raccourci «Local» et ouvrez le dossier correspondant à votre login. Copiez le répertoire complet «Ubuntu_BD_PROG» sur votre espace «sanssauvegarde» (normalement un enseignant a dû vous demander votre login pour vous attribuer de l espace) ou un support externe. Pour utiliser ce travail sur une autre machine dans une salle de TP de l école vous devez copier le répertoire «Ubuntu_BD_PROG» situé sur «sanssauvegarde» dans le répertoire /users/local/votre_login de la nouvelle salle machine. Cliquez ensuite sur «Lancement de machines virtuelles», sélectionnez «Ubuntu_BD_PROG» et choisissez de démarrer à partir de l image existante. 2. SAUVEGARDE POUR TRAVAILLER DE CHEZ SOI Pour pouvoir utiliser cette machine virtuelle sur votre machine personnelle, il faut d abord installer VMware Player, le logiciel VMware qui exécute des machines virtuelles. Il doit s agir au minimum de la version 3 (dans les salles de TP de Télécom Bretagne il s agit de la version 3.1.4) qui se trouve à l adresse suivante : http://goo.gl/8p9qa Ensuite, suivez la procédure suivante : 1. Copier le modèle et le delta de la machine virtuelle Récupérer les répertoires /MachinesVirtuelles/Ubuntu_BD_PROG (on l appellera par la suite, répertoire modèle) et /users/local/votre_login/ubuntu_bd_prog (on l appellera par la suite répertoire delta), sur le disque de la machine personnelle. Attention, le répertoire modèle peut prendre plusieurs gigas. 2. Configurer la machine virtuelle pour le fonctionnement sur votre poste Dans le répertoire delta sur votre machine personnelle, ouvrez avec un éditeur le fichier avec extension.vmdk qui n a pas de -sxx (il s agit juste d un fichier texte). Changer la valeur de la variable parentfilenamehint pour indiquer l emplacement du fichier.vmdk du répertoire modèle sur votre machine. Laurent BRISSON et Philippe TANGUY 3

3. Lancer l'exécution de la machine virtuelle sur votre machine Étant donné que vous ne disposez pas du lanceur de machines virtuelles, il faut toujours effectuer le lancement de la machine virtuelle à partir du fichier.vmx du répertoire delta. Sinon, vos modifications ne seront pas prises en compte lors du prochain démarrage de la machine virtuelle. Pour réutiliser en salle de TP de Télécom Bretagne le travail effectué sur le poste personnel : Recopier le répertoire delta de votre machine personnelle dans /users/local/votre_login de la machine de Télécom Bretagne ; Modifier le fichier.vmdk qui n a pas de -sxx de ce delta pour remettre la variable parentfilenamehint à sa valeur initiale.cliquez sur le raccourci «Local» et ouvrez le dossier à votre nom. Copier le répertoire complet nommé «Ubuntu_BD_PROG» sous votre espace «sanssauvegarde» (normalement un enseignant a dû vous demander votre login pour vous attribuer de l espace). IV. PRESENTATION/ARCHITECTURE DE L APPLICATION A. ORGANISATION DU PROJET L organisation des fichiers du projet est visible dans l onglet Project Explorer dans Eclipse, sur la partie gauche. La structure du projet est celle de toute application Web, voici les éléments les plus importants : Le répertoire WebContent : contient tous les fichiers JSP, HTML, les répertoires images et styles. Ils sont directement accessibles via le serveur Web et forment une partie de l interface de l application. Le répertoire Libraries : contient les librairies Java nécessaires à l application. Le répertoire src : contient l ensemble des fichiers sources Java des composants de l application. Ces sources sont organisées en paquetages. Par exemple le composant ComposantBDLivre fait partie du package biblio (fichier ComposantBDLivre.java à l intérieur du répertoire biblio). Figure 1 - Arborescence du projet IMPORTANT! Vous ne devez pas essayer de compiler le fichier source : Eclipse le compile automatiquement lors de chaque sauvegarde! Laurent BRISSON et Philippe TANGUY 4

B. ARCHITECTURE DE L APPLICATION L application bibliothèque est une application Web Java dite multi-niveaux (n-tier). Dans notre cas, nous avons trois niveaux. L architecture peut être résumée à l aide du schéma suivant : 1er niveau 2ème niveau 3ème niveau Navigateur Web (Firefox, IE,...) HTTP Moteur de JSP Tomcat Partie serveur Web HTML : index.html JSP : ListePersonnes.jsp Java Composant Composants métier métier Java : : ComposantBDLivre.java JDBC SGBD PostgreSQL Côté serveur Niveau client : Le premier niveau est le niveau d interaction du client. Il est constitué d un simple navigateur Web (c est ce qu on appelle un client léger). Le navigateur se connecte au serveur en utilisant le protocole HTTP. Niveau serveur : cette partie est constituée de deux sous-niveaux : Le deuxième niveau ou niveau intermédiaire (middle-tier) contient l ensemble des composants qui participent au traitement de l information : les composants de l interface graphique (les fichiers JSP) et les composants qui codent les aspects métiers de l application (ComposantBDLivre, ComposantBDEmprunt, etc.). Le dernier niveau est constitué par la couche SGBD : la base PROJET_BIBLIOTHEQUE_BD présente sur PostgreSQL. Laurent BRISSON et Philippe TANGUY 5

V. GUIDE POUR DEBUTER LE PROJET A. CREATION DE VOTRE BASE DE DONNEES 1. LE LOGICIEL AQUA DATA STUDIO Lancez l application Aqua Data Studio à partir du bureau (icône ADS 4.7), puis choisissez le menu «Query Analyzer» en faisant un clic-droit sur Tables dans la base de données dédiée au projet «PROJET_BIBLIOTHEQUE_BD». Si vous vous intéressez à la manière de configurer la connexion, faites un clic-droit sur la base de données et sélectionnez «Server Properties». Une fois la fenêtre de requête ouverte, vous pouvez commencer à écrire votre script. Pensez à l enregistrer et une fois terminé, vous pouvez l exécuter en cliquant sur le bouton execute ressemblant à une flèche verte (CTRL-E). Figure 2 - Menu Query Analyzer 2. SPECIFICITES DU SGBD POSTGRESQL Bien que la syntaxe du langage SQL soit normalisée, chaque SGBD présente quelques variations de sa syntaxe. Par rapport aux scripts ORACLE distribués sur moodle dans le cadre des autres TP, voici les principales différences. Comme Oracle, PostgreSQL ne différencie pas les caractères minuscules et majuscules dans les mots clés du langage (create, insert, into, etc.). Dans les noms des tables et dans les noms des colonnes. Par contre il fait une différence dans les valeurs textuelles : o o select * from entreprise est équivalent à SELECT * FROM ENTREPRISE select * from candidature where nom='toto' ne donnera pas le même résultat que select * from candidature where nom='toto' Le séparateur des chaînes de caractères est le simple quote : '. Laurent BRISSON et Philippe TANGUY 6

La création d une table est identique à Oracle. Exemple : create table "nom_table" ( colonne_1 type, colonne_2 type, ) ; La création d une clé primaire avec une séquence est légèrement différente : dans une syntaxe abrégée (suffisante ici) il suffit d utiliser le type serial et d ajouter la contrainte primary key (voir table entreprise). À l exécution du script, PostgreSQL générera automatiquement une séquence qui sera nommée de la façon suivante : nomtable_nomcolonnepk_seq. Par exemple, pour la table entreprise, la séquence se nomme entreprise_id_seq. Vous pouvez trouver plus d information sur la manipulation des séquences en lisant ce document : http://goo.gl/zejpe La création d une clé référentielle est similaire à Oracle. Dans une syntaxe abrégée (la contrainte n est alors pas nommée), il suffit d indiquer pour la colonne qui porte la contrainte : nom_colonne type_colonne [not null] references nom_table La partie entre crochets est optionnelle. exemple : ref_entreprise integer not null references "entreprise" Les doubles quotes sont optionnelles. Une contrainte de non nullité se fait en ajoutant not null après le type de la colonne. Exemple : nom varchar(50) not null Types des données utiles : o serial : type entier (integer) qui permet la génération automatique d une séquence o integer : type entier sur 4 octets (suffisant pour la dimension de notre système d information) o varchar(n) : chaîne de n caractères max o text : chaîne de caractères non bornée en taille. Typiquement le CV d une candidature est de ce type, ce qui n est pas le cas du nom et du prénom par exemple. o date : stockage d une date (sans le stockage de l heure, inutile ici). Pour le stockage de l heure uniquement, il faut utiliser le type time et pour le stockage de la date avec l heure, il faut utiliser le type timestamp. Pour insérer une date dans une colonne de ce type, il faut insérer une chaîne de caractères (entourée de simples quotes) au format '2011-09-02' soit le 02 septembre 2011. Laurent BRISSON et Philippe TANGUY 7

B. EXEMPLE DE FONCTIONNALITE : LA LISTE DE TOUS LES LIVRES Pour tester le comportement de l application, une version complète de celle-ci est disponible à l URL suivante : http://srv-labs-006.enst-bretagne.fr/bibliotheque/ Une des fonctionnalités de l application est «presque» implémentée : la liste de tous les livres présents dans la base de données. L implémentation de cette fonctionnalité est faite sur trois niveaux : Au premier niveau, le composant graphique qui interagit avec le navigateur est le fichier JSP ListeLivres.jsp. Au deuxième niveau, ce JSP interagit avec le composant Java ComposantBDLivre. Au troisième et dernier niveau, ce composant interagit avec la base de données où se trouve la table contenant les données à afficher. L ensemble du fonctionnement est schématisé ci-dessous : ListeLivres.jsp ComposantBDLivre Oracle base ENSEIG Appel de la méthode listetouslivre() Gestion de l affichage des résultats listetouslivre() Requête select * from livre order by titre Encapsulation des résultats au sein d un ArrayList Renvoi Table livre Id Isbn10 1 000 Isbn13 111 Titre Aaa Auteur Bbbb 1. LE JSP LISTELIVRES.JSP Le composant d affichage de la liste des livres effectue principalement deux actions : demander au composant ComposantBDLivre la liste des livres et gérer l affichage des résultats. La récupération de la liste des livres se fait à la ligne 28 : livres = compbd.listetouslivres(); Le résultat est stocké dans une structure de données (ArrayList). Ce résultat est ensuite affiché (lignes 50 à 66) au sein d un tableau HTML. 2. LE COMPOSANT COMPOSANTBDLIVRE La méthode listetouslivre() est la méthode du composant ComposantBDLivre qui est utilisée par cette fonctionnalité. Cette méthode utilise une connexion JDBC pour récupérer les données à partir de la base. Cette méthode récupère les données à partir d un certain nombre de colonnes qui doivent impérativement être présentes dans la table : les colonnes id, isbn10, isbn13, titre et auteur. 3. LA TABLE LIVRE Cette table n existe pas dans votre base de données (c est la première étape de votre travail ). Attention, le code de ComposantBDLivre s attend à trouver un certain nombre de colonnes qui doivent OBLIGATOIREMENT être présentes au sein de votre table (voir plus haut). Laurent BRISSON et Philippe TANGUY 8

C. MEMENTO JAVA DATABASE CONNECTIVITY (JDBC) 1 Obtenir une connexion à la base de données instance de la classe Connection Connexion conn = Connexion.getConnection (); 2 À partir de la classe Connection, obtenir une instance de la classe Statement ~ unité de base permettant une interaction avec la base de données Statement stmt = conn.createstatement (); Modifier des données de la base (insert, delete, update ) Obtenir des données de la base : requête (select ) 3 Exécution de la mise à jour sur le Statement. 3 Exécution de la requête sur le Statement et récupération des résultats dans un ResultSet. «executeupdate» ne renvoie pas de résultats. Seul le nombre de lignes modifiés dans la base est renvoyé stmt.executeupdate ("insert into "); 4 Boucle sur le ResultSet pour récupérer ligne par ligne les résultats. ResultSet rset = stmt.executequery ("select * from table "); while (rset.next() ) { String s = rset.getstring ("col"); 5 Fermeture du ResultSet. rset.close(); 6 Fermeture du Statement. stmt.close(); 7 Fermeture de la connexion. conn.close(); Laurent BRISSON et Philippe TANGUY 9

D. COMPLEMENTS D INFORMATION ESSENTIELS A LIRE POUR VOUS FACILITER LA VIE! 1. PRECISION SUR LES METHODES "CREERLIVRE" ET "CREERUSAGER" Ces deux méthodes insèrent respectivement dans la base de données les informations sur un nouveau livre et un nouvel usager. Les commentaires associés à ces méthodes sont très courts. Chacune de ces méthodes renvoit une valeur entière (int) qui est l'identifiant unique des données enregistrées (livre ou usager). Dans le code qui vous est livré, la valeur par défaut (et inutilisable) est -1. Il y a donc deux tâches à réaliser dans les méthodes : 1. Insertion des nouvelles données : Lorsqu on exécute la commande SQL suivante : insert into livre values (...) vous devez utilisez la séquence associée à la clé primaire pour obtenir une nouvelle valeur pour l'identifiant (clé primaire). 2. Récupération de l'id du nouveau livre (usager) : Le principe est de demander à la base qu'elle est la valeur courante de la séquence associée (voir document sur Moodle sur l'utilisation des séquences sous Postgresql). Il est possible de faire un requête SQL de la forme : select currval('nom_de_ma_sequence') Le code suivant permet la récupération (exemple donné pour un livre) : public static int creerlivre(string isbn10, String isbn13, String titre, String auteur) throws SQLException { Statement stmt = Connexion.getConnection().createStatement(); // Partie 1 - insertion du nouveau livre : à compléter... / Partie 2 - récupération de l'id correspondant au nouveau livre String query = "select currval('livre_id_seq') as valeur_courante_id_livre"; } ResultSet rset = stmt.executequery(query); rset.next(); int id = rset.getint("valeur_courante_id_livre"); rset.close(); stmt.close(); return id; Laurent BRISSON et Philippe TANGUY 10

Note importante : cette application informatique n'est pas une application "réelle", il n'y a qu'un seul utilisateur connecté sur la partie serveur. Comme toutes les véritables applications Web, plusieurs utilisateurs simultanés peuvent utiliser l'application en même temps. Que pourrait-il arriver si deux utilisateurs différents saisissaient chacun un nouveau livre quasiment simultanément (dans un laps de temps de l'ordre de quelques millisecondes)? 2. DU CODE MORT Qu est-ce qu un code mort? C est tout simplement une portion de code qui n est jamais utilisée dans une application. On peut constater que la méthode ArrayList<String[]> listeemprunts(string statut) n est jamais appelée. Il n est donc pas utile de la compléter. 3. INVERSIONS DANS L ORDRE D AFFICHAGE DES ATTRIBUTS D UN EMPRUNT Pour résoudre ce problème, voici les manipulations à effectuer : Fichier ListeEmpruntEnCours.jsp lignes 56/57 Remplacer le code : <td><%=emprunt[1]%></td> <td><%=emprunt[0]%></td> Par le code suivant : <td><%=emprunt[0]%></td> <td><%=emprunt[1]%></td> Fichier ListeEmpruntHistorique.jsp lignes 56/57 Remplacer le code : <td><%=emprunt[1]%></td> <td><%=emprunt[0]%></td> Par le code suivant : <td><%=emprunt[0]%></td> <td><%=emprunt[1]%></td> 4. J AI COMPLETE LA METHODE MODIFIERLIVRE() MAIS QUAND JE CLIQUE SUR MODIFIER UN LIVRE DANS L INTERFACE, J AI UN MESSAGE D ERREUR! Avant de pouvoir modifier un livre, il faut en afficher les informations : vous devez donc également compléter la méthode getlivre() avant de pouvoir modifier un livre à travers l interface web. Laurent BRISSON et Philippe TANGUY 11

5. «J AI UNE ERREUR AU NIVEAU DE RSET.NEXT()! AU SECOURS!» Il faut prendre l habitude de lire la documentation avant d appeler à l aide. Pour vous aider, voici la documentation concernant la méthode next() de la classe ResultSet. boolean next()throws SQLException Moves the cursor froward one row from its current position. A ResultSet cursor is initially positioned before the first row; the first call to the method nextmakes the first row the current row; the second call makes the second row the current row, and so on. When a call to the next method returns false, the cursor is positioned after the last row. Any invocation of a ResultSet method which requires a current row will result in a SQLException being thrown. If the result set type is TYPE_FORWARD_ONLY, it is vendor specified whether their JDBC driver implementation will return false or throw an SQLException on a subsequent call to next. If an input stream is open for the current row, a call to the method next will implicitly close it. A ResultSet object's warning chain is cleared when a new row is read. Returns: Throws: true if the new current row is valid; false if there are no more rows SQLException - if a database access error occurs or this method is called on a closed result set Observez bien le Returns que se passe-t-il si vous récupérez false et que vous tentez d accéder au ResultSet malgré tout? Documentation sur la classe ResultSet: http://goo.gl/smp0k Le lien vers la DOC JAVA : http://docs.oracle.com/javase/ Laurent BRISSON et Philippe TANGUY 12