You are on page 1of 20

���������� ������������������

����������

��������������������������

���
© Groupe Eyrolles, 2004, ISBN : 2-212-11532-6

partie n° 2

Concepts avancés

Figure 5-3

La table Livres enregistrée sous MySQL.

Enrichir une base de données avec JSP
Pour enregistrer les données à l’intérieur d’une table, il « suffit » d’utiliser la commande INSERT en y plaçant les valeurs relatives aux attributs définis dans la table. Nous imaginons maintenant, pour reprendre notre exemple, qu’un fonds de bibliothèque (c’està-dire le nombre de livres) correspond en moyenne à 150 000 livres, que le nombre d’adhérents peut atteindre les 20 000 et qu’en moyenne 500 livres sont empruntés par jour. Pour enregistrer

186

© Éditions Eyrolles

les précédents titres. Après validation des données saisies via le formulaire. SELECT. Ce travail est démesuré et ne peut être réalisé tel quel. Pour enrichir une base de données. pour l’essentiel. il nous faut taper 295 000 fois la commande INSERT (150 000 livres + 20 000 lecteurs + 500 livres × 250 jours). articles et photos sont archivés. INSERT. sont indispensables pour les concepteurs (éditeurs ou administrateurs) de bases de données mais elles ne le sont pas pour les utilisateurs finaux. Architecture 3-tiers L’enregistrement de données dans une table s’effectue selon le modèle 3-tiers. proche du mode de fonctionnement de l’utilisateur. l’enrichissement de ce type de base de données ne peut être effectué à l’aide de la simple commande INSERT. ces dernières sont vérifiées puis enregistrées dans la base de données. présenté à la figure 5-4. Tiers est un terme anglais qui se traduit par le mot « étage » et non par « un tiers ».chapitre n° 5 Interroger une base de données l’ensemble de ces données. de formulaires dont les champs à remplir correspondent aux différents attributs des tables créées par le concepteur de la base de données. Compte tenu du nombre d’articles et des délais très courts pour les mises à jour. les gros titres. etc. en faisant bien attention aux virgules. © Éditions Eyrolles 187 . très parlant. il convient de construire une interface simple et conviviale. Chaque jour. Cette interface est constituée. les articles et les photos sont modifiés. Figure 5-4 Architecture 3-tiers. Toutes ces informations sont bien entendues enregistrées dans une base de données qui permet la mise en ligne automatique de l’information. Chaque jour. Un autre exemple. les commandes CREATE. parenthèses et autres guillemets. Un composant JavaBean communique avec MySQL En réalité. est celui des sites éditoriaux (journaux en ligne).

Pour notre cas. figure 5-4-–).partie n° 2 Concepts avancés Les données sont saisies par l’utilisateur grâce à un formulaire HTML/JSP (premier étage. En effet. driver). Pour réaliser cette connexion. nous utilisons les pilotes fournis par MySQL et enregistrés dans la bibliothèque mysql-connector-java-3. Mise en place d’un tube de communication à partir de l’objet Connection. Il existe autant de pilotes que de types de bases de données. un composant JavaBean se connecte à la base de données et lui transmet les données (troisième étage. il doit au préalable se connecter à la base de données. JavaBean. 3.11-stable-bin.0. Plusieurs étapes sont nécessaires pour réaliser cette transmission. figure 5-4-˜) pour enregistrement. Reconnaître la base de données et créer un objet Connection Pour qu’un composant JavaBean interroge une base de données ou lui transmette une information. L’étude du chapitre 4 « Utiliser un objet Java dans un script » montre comment établir une communication entre un script JSP et un composant JavaBean. Reconnaissance de la base de données et création d’un objet Connection. Les données sont alors traitées par un composant JavaBean. L’installation du pilote mysql-connector-java est décrite en annexe « Contenu et exploitation du CD-Rom » de cet ouvrage. Nous devons pour cela définir les propriétés et les méthodes uti- 188 © Éditions Eyrolles . à la section « Autres installations ». Après vérification de la validité des données. les données réalisent un parcours électronique qui nécessite la mise en place de connexions permettant la transformation et la transmission des données d’un environnement à l’autre. elles se résument de la façon suivante : 1. Ces fonctions spécifiques sont rassemblées dans une bibliothèque de programmes appelée « pilote » (en anglais. Transmission de requêtes entre un JSP et une base de données via le tube. Ainsi. Nous allons maintenant examiner comment les informations stockées dans un composant sont transmises à une base de données MySQL. le composant doit connaître le moyen de communiquer avec la base de données. Lorsque l’utilisateur valide le formulaire. chaque environnement (JSP. MySQL) code et interprète les données d’une façon qui lui est propre. les données sont transmises au serveur Tomcat (deuxième étage.jar. 2. de la saisie à l’aide de formulaires HTML à l’enregistrement dans une base de données MySQL. Création du composant JavaBean DBConnexion Notre objectif est d’écrire un composant JavaBean nommé DBConnexion qui se connecte à une base de données MySQL. figure 5-4-—) à l’aide d’une requête JSP. Il lui faut pour cela faire appel à des fonctions spécifiques qui ont été écrites par les concepteurs de la base de données.

Driver") . il est nécessaire d’indiquer les informations telles que le protocole utilisé. Cette dernière regroupe toutes les méthodes permettant la détection des pilotes appropriés pour établir une connexion. le pilote (ou driver) JDBC (Java DataBase Connector) relatif à la base de données MySQL est chargé en mémoire. La méthode getConnection() est appelée via la classe DriverManager. où : q hostname est une variable de type String qui contient soit le nom réseau de la machine hébergeant la base de données. puisque c’est ensuite à travers lui que va s’effectuer la communication entre JSP et MySQL. Construction de l’URL Jdbc Pour établir une connexion. Cet objet est essentiel.getConnection(urlJdbc). le pilote propose la méthode getConnection() dont la syntaxe d’utilisation se présente ainsi : Connection cnx = DriverManager.chapitre n° 5 Interroger une base de données les à la mise en place de cette connexion.forName("com. À cette fin. ainsi que le nom d’utilisateur et son mot de passe. pour des raisons d’optimisation.jdbc. pour réaliser une connexion. Elle s’écrit comme suit : "jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase . Ensuite. nous devons charger en mémoire le pilote que nous souhaitons utiliser pour établir la connexion. appelée communément URL Jdbc. Par défaut. Cette information est stockée sous la forme d’une chaîne de caractères nommée urlJdbc. il convient d’utiliser l’instruction : Class. soit l’adresse IP de cette machine. le lieu où se trouve la base de données. La façon dont est construite cette chaîne est décrite ci-après. examinons étape par étape comment réaliser une telle connexion. Lorsque la connexion est enfin réalisée. Le protocole ainsi que le lieu où se trouve la base de données s’écrivent sous la forme d’une URL (Uniform Resource Locator). Examinons chacun des termes de cette instruction. aucun pilote de connexion à une base de données n’est chargé en mémoire de la JVM. Grâce à cette instruction.mysql. Avant tout. le nom d’utilisateur et son mot de passe. enregistrée dans un objet appelé cnx. q port est une variable de type String qui contient le numéro de port d’écoute du serveur MySQL. Pour réaliser cette opération. la méthode getConnection() retourne en résultat une valeur de type Connection. La méthode getConnection() demande qu’on lui indique en paramètre où se trouve la base de données. © Éditions Eyrolles 189 .

q password correspond au mot de passe associé au compte utilisateur. Le login et le mot de passe sont envoyés lors de la demande de connexion. Ces valeurs sont définies comme propriétés du composant JavaBean. Pour distinguer chaque utilisateur et déterminer son droit d’accès. reportez-vous à la procédure d’installation de MySQL en annexe « Contenu et exploitation du CD-Rom ». l’administrateur de la base crée des comptes utilisateur caractérisés par un login et un mot de passe. urlJdbc = "jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase . 190 © Éditions Eyrolles . } Cette méthode construit et renvoie l’URL Jdbc à partir des cinq informations nécessaires à la connexion host. login et passwd. Pour notre cas. nomDeLaBase. return urlJdbc . La mise en place de l’URL s’effectue par l’intermédiaire d’une méthode métier dont la structure est la suivante : private String construireUrlJdbc() { String urlJdbc . comme suit : urlJdbc = "jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase . Le nom d’utilisateur ainsi que le mot de passe sont nécessaires à la mise en place d’une connexion. port. En effet. à la section « Installation de MySQL sous Windows ou Linux ». urlJdbc = urlJdbc + "?user=" + login + "&password=" + password . il existe différents types d’utilisateurs allant du simple consultant à l’administrateur en passant par le gestionnaire. Toutes ces données (URL. L’ensemble de ces informations est stocké à l’intérieur d’une chaîne de caractères. où : q login correspond au nom du compte de l’utilisateur désirant travailler sur la base de don- nées.partie n° 2 Concepts avancés q nomDeLaBase est une variable de type String qui contient le nom de la base de don- nées sur le serveur. nommée urlJdbc. compte utilisateur et mot de passe) sont établies par l’administrateur de la base de données. lors de sa mise en place. à laquelle ils sont ajoutés de la façon suivante : urlJdbc = urlJdbc + "?user=" + login + "&password=" + password . en tant que paramètres de l’URL Jdbc.

construireUrlJdbc() et DriverManager.out.println(e).forName(). il fournit un numéro de connexion ˜.mysql. Figure 5-5 Après validation du formulaire –. © Éditions Eyrolles 191 . statusConnexion = true. try { Class.jdbc. Ces méthodes sont insérées au sein d’une structure try–catch pour gérer les erreurs qui pourraient se produire lors de la connexion.Driver").getConnection() étudiées précédemment. } catch ( Exception e ) { statusConnexion = false. En effet. System. } return statusConnexion. En retour.getConnection(urlJdbc). cnx = DriverManager. le serveur charge le pilote et se connecte —. Si une erreur se produit lors de l’exécution des instructions contenues dans la partie try. la structure try-catch permet de « lever » les exceptions. alors les instructions situées dans la partie catch sont exécutées. } La méthode reprend les méthodes Class. urlJdbc = construireUrlJdbc().chapitre n° 5 Interroger une base de données Une méthode pour établir la connexion Examinons maintenant l’écriture de la méthode etablirConnexion() qui permet la connexion avec la base de données : private boolean etablirConnexion() { boolean statusConnexion = false.forName("com.

} public void setNomDeLaBase (String valeur) { nomDeLaBase = valeur . l’accès aux propriétés s’effectue par l’intermédiaire des méthodes d’accès suivantes : public void setLogin (String valeur) { login = valeur . La déclaration des propriétés s’effectue de la façon suivante : private private private private private private String login . Pour se connecter. password. par l’intermédiaire d’un JSP. hostname.0\logs\stderr (Windows) ou /usr/local/jakarta-tomcat-5. String hostname. hostname. String password . la valeur retournée par la méthode getConnection() est affectée à l’objet cnx de type Connection et la variable booléenne statusConnexion prend la valeur true. le système et l’utilisateur doivent transmettre. String nomDeLaBase. nomDeLaBase et cnx comme propriétés du composant DBConnexion. le bloc catch met à false la variable booléenne statusConnexion et écrit le type d’erreur dans le fichier C:\Program Files\Apache Software Foundation\Tomcat 5. Chacune de ces propriétés doit donc être accessible en écriture. String port. } public void setPassword (String valeur) { password = valeur . password. dans la structure try. Les propriétés étant définies pour des raisons de sécurité en mode private. port.0. Propriétés et méthodes d’accès du composant DBConnexion L’étude des méthodes métier construireUrlJdbc() et etablirConnexion() montre qu’il est nécessaire de définir les variables login. les valeurs relatives aux propriétés login. } public void setHostname (String valeur) { hostname = valeur .partie n° 2 Concepts avancés Ainsi pour notre exemple. En cas d’erreur lors de la connexion. } 192 © Éditions Eyrolles .25/logs/stderr (Linux). port. Connection cnx. nomDeLaBase. } public void setPort (String valeur) { port = valeur .

l’instruction import java. public class DBConnexion implements java.*.chapitre n° 5 Interroger une base de données Les méthodes d’accès en écriture ou en lecture sont étudiées au chapitre 4..ch5 */ package Exemples. elle teste le résultat retourné par la méthode etablir Connexion(). il convient de placer. Le code source complet du composant DBConnexion /* Fichier : DBConnexion. Cette propriété doit donc être accessible en lecture. © Éditions Eyrolles 193 . import java.java Class : DBConnexion Package : exemples. section « Qu’est ce qu’un JavaBean ? ». private String hostname. comme le montre la méthode suivante : public Connection getCnx() { if (etablirConnexion()) { return cnx. private String port. } else { return null. } } Afin de gérer les erreurs. private String nomDeLaBase.Serializable . « Utiliser un objet Java dans un script ».forName() et getConnection() soient reconnus par le compilateur Java. private String password . Pour que le type Connection et que les méthodes Class.sql. la méthode getCnx() renvoie une valeur null si la connexion ne peut s’établir. À l’inverse. import java. Pour cela.io.sql.Serializable { //Définition des propriétés private String login. la propriété cnx est créée par le composant DBConnexion.Ch5 . au début du composant DBConnexion.io.* . Elle doit être transmise aux composants qui s’occupent de gérer les requêtes vers la base de données.

partie n° 2 Concepts avancés private Connection cnx. } public void setNomDeLaBase (String valeur) { nomDeLaBase = valeur . } public void setPassword (String valeur) { password = valeur . // Méthodes d’accès en écriture public void setLogin (String valeur) { login = valeur . } } // Méthodes invisibles (métier) private String construireUrlJdbc() { String urlJdbc . } public void setHostname (String valeur) { hostname = valeur . } else { return null. } public void setPort (String valeur) { port = valeur . } 194 © Éditions Eyrolles . urlJdbc = "jdbc:mysql://"+hostname+":" + port + "/" + nomDeLaBase . return urlJdbc . } // Méthodes d’accès en lecture public Connection getCnx() { if (etablirConnexion()) { return cnx. urlJdbc = urlJdbc + "?user=" + login + "&password=" + password .

cnx=DriverManager. Un objet de type Statement est comparable à un tube (ou. c’est-à-dire un comportement associé à un Statement. Les requêtes sont transmises à l’aide d’un objet de liaison Java qui sait communiquer du monde JSP vers le monde MySQL et inversement. } catch ( Exception e ) { statusConnexion = false. Concrètement. Lorsque cet objet est créé. } return statusConnexion.mysql. L’application JSP envoie une requête vers la base de données. la mise en place de cette liaison s’effectue à travers un objet de type Statement. La classe Statement est une interface définie par Java. la base transmet le ou les résultats par le même canal. Une interface est une classe particulière qui définit les différents types de comportements sans en décrire réellement les actions. statusConnexion = true.println(e). System.Driver"). ne peut être décrite que par le programmeur en fonction de ce que l’application doit réaliser. via le tube. © Éditions Eyrolles 195 . Pour créer un objet Statement.forName("com. En retour. il permet de communiquer dans les deux sens. pipeline). urlJdbc=construireUrlJdbc().getConnection(urlJdbc).jdbc. il s’agit d’envoyer des requêtes vers la base de données. le tube de communication reste ouvert tant que l’objet est chargé en mémoire. } } Mise en place d’un tube de communication Une fois la connexion établie.chapitre n° 5 Interroger une base de données private boolean etablirConnexion() { boolean statusConnexion = false. il suffit de faire appel à la méthode createStatement() définie à l’intérieur de la classe Connection. dans le jargon informatique. Les méthodes définies par un Statement ne peuvent être prédéfinies par le langage Java. Une requête.out. Ce tube est bidirectionnel. try { Class.

Pour cela. il convient donc de l’insérer dans une structure try-catch. System. le JSP demande la création d’une communication ™ à l’aide d’un objet de type Statementš. le 196 © Éditions Eyrolles .println(e). Cet objet est créé par le composant DBConnexion. Pour des raisons pédagogiques. statusStatement = true . Si aucune erreur n’est détectée.createStatement(). nous allons créer un composant JavaBean nommé DBLien. nous avons préféré les présenter séparément. La méthode createStatement() détecte les erreurs éventuelles de communication. Les deux JavaBeans DBConnexion et DBLien peuvent être réunis en un seul JavaBean qui gère tous les aspects relatifs à la mise en place d’une communication JSP/base de données.out. try { lien=cnx. } catch ( Exception e ) { statusStatement = false.partie n° 2 Concepts avancés Figure 5-6 Une fois la connexion établie ˜. Création du composant JavaBean DBLien Examinons à travers un exemple comment créer et gérer un objet de type Statement. La méthode métier du JavaBean DBLien fait appel à la méthode createStatement() de la façon suivante : private boolean construireStatement (Connection cnx) { boolean statusStatement = false. } La méthode construireStatement() appelle la méthode createStatement() à travers l’objet cnx de type Connection. } return statusStatement.

java Class : DBLien Package : exemples. import java.io. Propriétés et méthodes d’accès du composant DBLien L’objet lien est défini comme étant une propriété du composant DBLien. En cas d’erreur lors de la création du tube de communication. Cette propriété doit donc être accessible en lecture.Ch5 . Elle doit être transmise aux composants qui s’occupent de gérer les requêtes vers la base de données.ch5 */ package Exemples. Le code source complet /* Fichier : DBLien.chapitre n° 5 Interroger une base de données résultat de l’appel de createStatement() est stocké dans un objet nommé lien de type Statement et la variable booléenne statusStatement prend la valeur true. soit transmis via le JSP au composant DBLien. La propriété lien est créée par le composant DBLien. comme le montre la méthode suivante : public Statement getLien(Connection cnx) { if (construitStatement(cnx)) { return lien. import java. Elle prend également en paramètre l’objet cnx de façon à ce que ce dernier.0. © Éditions Eyrolles 197 . } else { return null.25/logs/stderr (Linux).Serializable { //Définition des propriétés private Statement lien = null.0\logs\stderr (Windows) ou /usr/local/jakarta-tomcat-5.*. } } Nous voyons ici que la méthode getLien() retourne l’objet lien ou l’objet null en fonction du retour de la méthode métier construireStatement(). le bloc catch met à false la variable booléenne statusStatement et écrit le type d’erreur dans le fichier C:\Program Files\Apache Software Foundation\Tomcat 5.sql.Serializable .io. créé par le composant DBConnexion. public class DBLien implements java.

println(e). Dans un premier temps.Ch5. } else { return null. La page JSP doit donc créer deux objets de type DBConnexion et DBLien et attribuer les valeurs appropriées aux différentes propriétés.createStatement().Connection" %> <%@ page import="java. Création et initialisation des objets DBConnexion et DBLien En tout premier lieu.Statement" %> Ensuite vient la création des deux objets correspondant aux deux composants. } } // Méthodes invisibles private boolean construireStatement (Connection cnx) { boolean statusStatement = false.DBConnexion" /> 198 © Éditions Eyrolles .sql. } return statusStatement. le JSP doit également faire appel aux différentes méthodes d’accès définies au sein des composants.sql.out. try { lien=cnx. System. statusStatement = true . } } Transmission de requêtes entre un JSP et une base de données Les deux composants DBConnexion et DBLien sont maintenant à notre disposition pour mettre en relation l’application JSP avec la base de données.partie n° 2 Concepts avancés // Méthodes d’accès en lecture public Statement getLien(Connection cnx) { if (construireStatement(cnx)) { return lien. la page JSP doit importer les deux classes nécessaires à la manipulation d’un objet Connection et d’un objet Statement : <%@ page import="java. } catch ( Exception e ) { statusStatement = false. les objets dbcnx et dblien sont créés grâce aux instructions : <!--// DBConnexion Bean--> <jsp:useBean id="dbcnx" class="Exemples. Pour établir la connexion.

La connexion s’établit sur le port 3306 en local (localhost) sur la base de données portant le nom livrejsp.println("<font color=red>Connexion impossible : " + cnx + "</font>"). Pour autoriser la connexion à d’autres utilisateurs. Pour notre cas. Le nom des utilisateurs et celui de la base de données sont définis par l’administrateur de la base de données lors de sa mise en place. aucune propriété n’est à initialiser. à la section « La création des bases système MySQL ».println("<font color=green>Connexion établie : " + cnx + "</font>"). } © Éditions Eyrolles 199 .getCnx(). nous avons choisi d’initialiser les propriétés de l’objet dbcnx à l’intérieur même du JSP. comme le montrent les instructions suivantes : Connection cnx = dbcnx. L’utilisateur qui se connecte a pour login et pour mot de passe jspuser. Cette initialisation s’effectue grâce aux instructions : <!--// Code d’initialisation //--> <jsp:setProperty name="dbcnx" property="login" value="jspuser" /> <jsp:setProperty name="dbcnx" property="password" value="jspuser" /> <jsp:setProperty name="dbcnx" property="hostname" value="localhost" /> <jsp:setProperty name="dbcnx" property="port" value="3306" /> <jsp:setProperty name="dbcnx" property="nomDeLaBase" value="livrejsp"/> Pour simplifier. Pour l’objet dblien. Le résultat de cette connexion est enregistré dans l’objet cnx.chapitre n° 5 Interroger une base de données <!--// DBLien Bean --> <jsp:useBean id="dblien" class="Exemples. } else { out. il convient d’initialiser l’objet dbcnx de façon à mettre en place la connexion. if (cnx == null) { out. reportez-vous à la procédure d’installation de MySQL décrite en annexe « Contenu et exploitation du CD-Rom ». Accéder aux propriétés des objets DBConnexion et DBLien Après création et initialisation.DBLien" /> Cela fait. la connexion s’établit à travers l’objet dbcnx.Ch5. la seule propriété lien étant initialisée par le composant lui-même. vous devez créer un formulaire de saisie du login et du mot de passe avant toute initialisation.

La page JSP manipule des objets de type Connection et Statement --> <%@ page import="java. Le code source complet Les instructions relatives à la connexion et à la mise en place du tube de communication sont écrites en Java.DBConnexion"> <!--// Code d’initialisation //--> <jsp:setProperty name= "dbcnx" property="login" value="jspuser"/> <jsp:setProperty name= "dbcnx" property="password" value="jspuser"/> <jsp:setProperty name= "dbcnx" property="hostname" value="localhost"/> <jsp:setProperty name= "dbcnx" property="port" value="3306"/> 200 © Éditions Eyrolles .Statement" %> <!--// DBConnexion Bean--> <jsp:useBean id="dbcnx" class="Exemples. le serveur envoie sur le flux HTTP.partie n° 2 Concepts avancés Lors de l’exécution de ces instructions. DBLien --> <!-. if (lien == null) { out. le serveur envoie sur le flux HTTP un message confirmant ou infirmant la mise en place du tube de communication.sql.println("<font color=green>OK : " + lien + "</font>"). <!-# Fichier : connexionLien.println(). Il est créé par l’intermédiaire de l’objet dblien et à l’aide de l’objet cnx. } L’objet lien matérialise le tube de communication. lors de l’exécution de ces instructions.getLien(cnx). grâce à la méthode out.sql.println("<font color=red>KO : " + lien + "</font>"). Comme précédemment. la mise en place du tube de communication s’effectue grâce aux instructions suivantes : Statement lien = dblien. un message confirmant ou infirmant l’obtention de la connexion.jsp # Description : # Se connecte et crée un tube de communication # avec la base de données livrejsp # login et mot de passe par défaut : jspuser # JavaBeans : DBConnexion. Elles sont placées entre des balises <% et %> (zones grisées). } else { out.Ch5.Connection" %> <%@ page import="java. Pour finir.

} else { out.println("<font color=red>Communication impossible : " + lien + "</font>").chapitre n° 5 Interroger une base de données <jsp:setProperty name= "dbcnx" property="nomDeLaBase" value="livrejsp"/> </jsp:useBean> <!--// DBLien Bean --> <jsp:useBean id="dblien" class="Exemples.println("<font color=green>Communication établie : " + lien + "</font>").getCnx().Ch5.getLien(cnx).println("<font color=red>Connexion impossible : " + cnx + "</font>"). } %> © Éditions Eyrolles 201 . if (lien == null) { out. } %> <br><br> <font face=arial size=2 color=black>2ème étape : Création d’un tube de communication :<br> <% // Création du tube de communication avec la base de données Statement lien = dblien.println("<font color=green>Connexion établie : " + cnx + "</font>").DBLien"/> <html> <body> <table width=700><tr><td> <h1><font face=arial>Sélection sur la table Livres</h1> <h3><font face=arial>La connexion avec la base de données</h3> <font face=arial size=2 color=black>1ère étape : Création d’une connexion vers la base de données :<br> <% // Récupération de la connexion Connection cnx = dbcnx. if (cnx == null) { out. } else { out.

un élément particulier est enregistré dans la base . Consulter ou modifier une base de données ? Après la connexion et la mise en place d’un tube de communication. q la modification. executeQuery() et execute Update(). Ces deux méthodes s’exécutent à travers le tube de communication Statement créé dans la section précédente (voir figure 5-8). Modifier la base de données Pour modifier le contenu d’une base de données. les requêtes MySQL INSERT. il convient d’utiliser la méthode execute Update(). Il existe deux types de traitement : q la consultation. 202 © Éditions Eyrolles . Grâce à cette dernière. par exemple. pour insérer. qui permet de savoir si.jsp affiche les différentes étapes nécessaires à la connexion d’une base de données MySQL. nous pouvons effectuer différents traitements sur la base de données.partie n° 2 Concepts avancés </td></tr></table> </body> </html> La figure 5-7 présente le résultat de l’exécution du programme connexionLien. Figure 5-7 Le programme connexionLien. alors que la requête UPDATE autorise la mise à jour d’une ligne d’une table. mettre à jour ou supprimer un élément de la base.jsp. JSP propose deux méthodes pour réaliser ces traitements. La requête INSERT permet l’insertion de lignes supplémentaires dans une ou plusieurs tables. UPDATE et DELETE sont exécutables à l’intérieur d’un programme JSP. et que la requête DELETE est utilisée pour supprimer une ou plusieurs lignes d’une table de la base de données.

en fonction de la commande exécutée. mises à jour ou supprimées. La syntaxe d’utilisation de la méthode executeUpdate(). — Validation des données à insérer dans la base de données à l’aide d’un composant Java Bean. celui-ci est retourné au navigateur ›. soit lors de la section précédente de ce chapitre.chapitre n° 5 Interroger une base de données Figure 5-8 Lorsque le tube de communication est mis en place. Pour cela. Notre tâche consiste donc à récupérer tous les fichiers utiles à la réalisation de notre application et à les assembler correctement (voir figure 5-9). Elle représente le nombre de lignes insérées.executeUpdate(commande). les requêtes sont transmises à la base de données š et. nous devons réaliser les cinq étapes suivantes (voir figure 5-9) : – Mise en page d’un formulaire contenant les attributs de la table Livres. š Insertion des données à l’aide de la commande executeQuery(). où : q lien est un objet de type Statement et représente le tube de communication décrit précédemment. ™ Connexion à la base de données et ouverture d’un tube de communication. q commande est une chaîne de caractères qui contient la commande MySQL d’insertion. de mise à jour ou de suppression. Exemple : insertion d’un nouveau livre dans la table Livres L’objectif est ici d’insérer un nouveau livre dans la table Livres. Les quatre premières étapes ont déjà été réalisées. nous sommes sûrs que la commande est exécutée à l’intérieur du tube de communication. ˜ Récupération des données transmises par le composant JavaBean. © Éditions Eyrolles 203 . soit au cours du chapitre 4. est la suivante : int valeur = lien. q valeur est la valeur de retour de la méthode. s’il y a un résultat. En appliquant la méthode à l’objet lien.

partie n° 2 Concepts avancés Figure 5-9 Les cinq étapes permettant d’insérer un livre dans la base de données. 204 © Éditions Eyrolles . Figure 5-10 Formulaire de saisie permettant d’enregistrer les informations relatives à un livre. L’étape 1 a pour finalité de construire un formulaire HTML qui présente les différents champs de saisie correspondant aux champs de la table Livres. comme le montre la figure 5-10.