Vous êtes sur la page 1sur 20

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

partie n 2

Concepts avancs

Figure 5-3

La table Livres enregistre sous MySQL.

Enrichir une base de donnes avec JSP


Pour enregistrer les donnes lintrieur dune table, il suft dutiliser la commande INSERT en y plaant les valeurs relatives aux attributs dnis dans la table. Nous imaginons maintenant, pour reprendre notre exemple, quun fonds de bibliothque (cest-dire le nombre de livres) correspond en moyenne 150 000 livres, que le nombre dadhrents peut atteindre les 20 000 et quen moyenne 500 livres sont emprunts par jour. Pour enregistrer

186

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

lensemble de ces donnes, il nous faut taper 295 000 fois la commande INSERT (150 000 livres + 20 000 lecteurs + 500 livres 250 jours), en faisant bien attention aux virgules, parenthses et autres guillemets. Ce travail est dmesur et ne peut tre ralis tel quel. Un autre exemple, trs parlant, est celui des sites ditoriaux (journaux en ligne). Chaque jour, les gros titres, les articles et les photos sont modis. Chaque jour, les prcdents titres, articles et photos sont archivs. Toutes ces informations sont bien entendues enregistres dans une base de donnes qui permet la mise en ligne automatique de linformation. Compte tenu du nombre darticles et des dlais trs courts pour les mises jour, lenrichissement de ce type de base de donnes ne peut tre effectu laide de la simple commande INSERT.

Un composant JavaBean communique avec MySQL


En ralit, les commandes CREATE, INSERT, SELECT, etc. sont indispensables pour les concepteurs (diteurs ou administrateurs) de bases de donnes mais elles ne le sont pas pour les utilisateurs naux. Pour enrichir une base de donnes, il convient de construire une interface simple et conviviale, proche du mode de fonctionnement de lutilisateur. Cette interface est constitue, pour lessentiel, de formulaires dont les champs remplir correspondent aux diffrents attributs des tables cres par le concepteur de la base de donnes. Aprs validation des donnes saisies via le formulaire, ces dernires sont vries puis enregistres dans la base de donnes.

Architecture 3-tiers
Lenregistrement de donnes dans une table seffectue selon le modle 3-tiers, prsent la gure 5-4.

Figure 5-4

Architecture 3-tiers.

Tiers est un terme anglais qui se traduit par le mot tage et non par un tiers .

ditions Eyrolles

187

partie n 2

Concepts avancs

Les donnes sont saisies par lutilisateur grce un formulaire HTML/JSP (premier tage, gure 5-4-). Lorsque lutilisateur valide le formulaire, les donnes sont transmises au serveur Tomcat (deuxime tage, gure 5-4-) laide dune requte JSP. Les donnes sont alors traites par un composant JavaBean. Aprs vrication de la validit des donnes, un composant JavaBean se connecte la base de donnes et lui transmet les donnes (troisime tage, gure 5-4-) pour enregistrement. Ainsi, de la saisie laide de formulaires HTML lenregistrement dans une base de donnes MySQL, les donnes ralisent un parcours lectronique qui ncessite la mise en place de connexions permettant la transformation et la transmission des donnes dun environnement lautre. En effet, chaque environnement (JSP, JavaBean, MySQL) code et interprte les donnes dune faon qui lui est propre. Ltude du chapitre 4 Utiliser un objet Java dans un script montre comment tablir une communication entre un script JSP et un composant JavaBean. Nous allons maintenant examiner comment les informations stockes dans un composant sont transmises une base de donnes MySQL. Plusieurs tapes sont ncessaires pour raliser cette transmission, elles se rsument de la faon suivante : 1. Reconnaissance de la base de donnes et cration dun objet Connection. 2. Mise en place dun tube de communication partir de lobjet Connection. 3. Transmission de requtes entre un JSP et une base de donnes via le tube.

Reconnatre la base de donnes et crer un objet Connection


Pour quun composant JavaBean interroge une base de donnes ou lui transmette une information, il doit au pralable se connecter la base de donnes. Pour raliser cette connexion, le composant doit connatre le moyen de communiquer avec la base de donnes. Il lui faut pour cela faire appel des fonctions spciques qui ont t crites par les concepteurs de la base de donnes. Ces fonctions spciques sont rassembles dans une bibliothque de programmes appele pilote (en anglais, driver). Il existe autant de pilotes que de types de bases de donnes. Pour notre cas, nous utilisons les pilotes fournis par MySQL et enregistrs dans la bibliothque mysql-connector-java-3.0.11-stable-bin.jar.
Linstallation du pilote mysql-connector-java est dcrite en annexe Contenu et exploitation du CD-Rom de cet ouvrage, la section Autres installations .

Cration du composant JavaBean DBConnexion Notre objectif est dcrire un composant JavaBean nomm DBConnexion qui se connecte une base de donnes MySQL. Nous devons pour cela dnir les proprits et les mthodes uti-

188

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

les la mise en place de cette connexion. cette n, examinons tape par tape comment raliser une telle connexion. Avant tout, nous devons charger en mmoire le pilote que nous souhaitons utiliser pour tablir la connexion. Par dfaut, pour des raisons doptimisation, aucun pilote de connexion une base de donnes nest charg en mmoire de la JVM. Pour raliser cette opration, il convient dutiliser linstruction :
Class.forName("com.mysql.jdbc.Driver") ;

Grce cette instruction, le pilote (ou driver) JDBC (Java DataBase Connector) relatif la base de donnes MySQL est charg en mmoire. Ensuite, pour raliser une connexion, le pilote propose la mthode getConnection() dont la syntaxe dutilisation se prsente ainsi :
Connection cnx = DriverManager.getConnection(urlJdbc);

Examinons chacun des termes de cette instruction. La mthode getConnection() est appele via la classe DriverManager. Cette dernire regroupe toutes les mthodes permettant la dtection des pilotes appropris pour tablir une connexion. La mthode getConnection() demande quon lui indique en paramtre o se trouve la base de donnes, ainsi que le nom dutilisateur et son mot de passe. Cette information est stocke sous la forme dune chane de caractres nomme urlJdbc. La faon dont est construite cette chane est dcrite ci-aprs. Lorsque la connexion est enn ralise, la mthode getConnection() retourne en rsultat une valeur de type Connection, enregistre dans un objet appel cnx. Cet objet est essentiel, puisque cest ensuite travers lui que va seffectuer la communication entre JSP et MySQL. Construction de lURL Jdbc Pour tablir une connexion, il est ncessaire dindiquer les informations telles que le protocole utilis, le lieu o se trouve la base de donnes, le nom dutilisateur et son mot de passe. Le protocole ainsi que le lieu o se trouve la base de donnes scrivent sous la forme dune URL (Uniform Resource Locator), appele communment URL Jdbc. Elle scrit comme suit :
"jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase ;

o :
q

hostname est une variable de type String qui contient soit le nom rseau de la machine

hbergeant la base de donnes, soit ladresse IP de cette machine.


q

port est une variable de type String qui contient le numro de port dcoute du serveur

MySQL.

ditions Eyrolles

189

partie n 2

Concepts avancs

nomDeLaBase est une variable de type String qui contient le nom de la base de don-

nes sur le serveur. Lensemble de ces informations est stock lintrieur dune chane de caractres, nomme
urlJdbc, comme suit :
urlJdbc = "jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase ;

Le nom dutilisateur ainsi que le mot de passe sont ncessaires la mise en place dune connexion. En effet, il existe diffrents types dutilisateurs allant du simple consultant ladministrateur en passant par le gestionnaire. Pour distinguer chaque utilisateur et dterminer son droit daccs, ladministrateur de la base cre des comptes utilisateur caractriss par un login et un mot de passe. Le login et le mot de passe sont envoys lors de la demande de connexion, en tant que paramtres de lURL Jdbc, laquelle ils sont ajouts de la faon suivante :
urlJdbc = urlJdbc + "?user=" + login + "&password=" + password ;

o :
q

login correspond au nom du compte de lutilisateur dsirant travailler sur la base de don-

nes.
q

password correspond au mot de passe associ au compte utilisateur.


Toutes ces donnes (URL, compte utilisateur et mot de passe) sont tablies par ladministrateur de la base de donnes, lors de sa mise en place. Pour notre cas, reportez-vous la procdure dinstallation de MySQL en annexe Contenu et exploitation du CD-Rom , la section Installation de MySQL sous Windows ou Linux .

La mise en place de lURL seffectue par lintermdiaire dune mthode mtier dont la structure est la suivante :
private String construireUrlJdbc() { String urlJdbc ; urlJdbc = "jdbc:mysql://" + hostname + ":" + port + "/" + nomDeLaBase ; urlJdbc = urlJdbc + "?user=" + login + "&password=" + password ; return urlJdbc ; }

Cette mthode construit et renvoie lURL Jdbc partir des cinq informations ncessaires la connexion host, port, nomDeLaBase, login et passwd. Ces valeurs sont dnies comme proprits du composant JavaBean.

190

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

Une mthode pour tablir la connexion Examinons maintenant lcriture de la mthode etablirConnexion() qui permet la connexion avec la base de donnes :
private boolean etablirConnexion() { boolean statusConnexion = false; try { Class.forName("com.mysql.jdbc.Driver"); urlJdbc = construireUrlJdbc(); cnx = DriverManager.getConnection(urlJdbc); statusConnexion = true; } catch ( Exception e ) { statusConnexion = false; System.out.println(e); } return statusConnexion; }

La mthode reprend les mthodes Class.forName(), construireUrlJdbc() et DriverManager.getConnection() tudies prcdemment. Ces mthodes sont insres au sein dune structure trycatch pour grer les erreurs qui pourraient se produire lors de la connexion. En effet, la structure try-catch permet de lever les exceptions. Si une erreur se produit lors de lexcution des instructions contenues dans la partie try, alors les instructions situes dans la partie catch sont excutes.

Figure 5-5

Aprs validation du formulaire , le serveur charge le pilote et se connecte . En retour, il fournit un numro de connexion .

ditions Eyrolles

191

partie n 2

Concepts avancs

Ainsi pour notre exemple, dans la structure try, la valeur retourne par la mthode getConnection() est affecte lobjet cnx de type Connection et la variable boolenne statusConnexion prend la valeur true. En cas derreur lors de la connexion, le bloc catch met false la variable boolenne statusConnexion et crit le type derreur dans le chier
C:\Program Files\Apache Software Foundation\Tomcat 5.0\logs\stderr (Windows) ou /usr/local/jakarta-tomcat-5.0.25/logs/stderr (Linux).

Proprits et mthodes daccs du composant DBConnexion Ltude des mthodes mtier construireUrlJdbc() et etablirConnexion() montre quil est ncessaire de dnir les variables login, password, hostname, port, nomDeLaBase et cnx comme proprits du composant DBConnexion. La dclaration des proprits seffectue de la faon suivante :
private private private private private private String login ; String password ; String hostname; String port; String nomDeLaBase; Connection cnx;

Pour se connecter, le systme et lutilisateur doivent transmettre, par lintermdiaire dun JSP, les valeurs relatives aux proprits login, password, hostname, port, nomDeLaBase. Chacune de ces proprits doit donc tre accessible en criture. Les proprits tant dnies pour des raisons de scurit en mode private, laccs aux proprits seffectue par lintermdiaire des mthodes daccs suivantes :
public void setLogin (String valeur) { login = valeur ; } public void setPassword (String valeur) { password = valeur ; } public void setHostname (String valeur) { hostname = valeur ; } public void setPort (String valeur) { port = valeur ; } public void setNomDeLaBase (String valeur) { nomDeLaBase = valeur ; }

192

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

Les mthodes daccs en criture ou en lecture sont tudies au chapitre 4. Utiliser un objet Java dans un script , section Quest ce quun JavaBean ? .

linverse, la proprit cnx est cre par le composant DBConnexion. Elle doit tre transmise aux composants qui soccupent de grer les requtes vers la base de donnes. Cette proprit doit donc tre accessible en lecture, comme le montre la mthode suivante :
public Connection getCnx() { if (etablirConnexion()) { return cnx; } else { return null; } }

An de grer les erreurs, la mthode getCnx() renvoie une valeur null si la connexion ne peut stablir. Pour cela, elle teste le rsultat retourn par la mthode etablir Connexion().
Pour que le type Connection et que les mthodes Class.forName() et getConnection() soient reconnus par le compilateur Java, il convient de placer, au dbut du composant DBConnexion, linstruction import java.sql.* ;.

Le code source complet du composant DBConnexion


/* Fichier : DBConnexion.java Class : DBConnexion Package : exemples.ch5 */ package Exemples.Ch5 ; import java.io.Serializable ; import java.sql.*; public class DBConnexion implements java.io.Serializable { //Dfinition des proprits private String login; private String password ; private String hostname; private String port; private String nomDeLaBase;

ditions Eyrolles

193

partie n 2

Concepts avancs

private Connection cnx; // Mthodes daccs en criture public void setLogin (String valeur) { login = valeur ; } public void setPassword (String valeur) { password = valeur ; } public void setHostname (String valeur) { hostname = valeur ; } public void setPort (String valeur) { port = valeur ; } public void setNomDeLaBase (String valeur) { nomDeLaBase = valeur ; } // Mthodes daccs en lecture public Connection getCnx() { if (etablirConnexion()) { return cnx; } else { return null; } } // Mthodes invisibles (mtier) private String construireUrlJdbc() { String urlJdbc ; urlJdbc = "jdbc:mysql://"+hostname+":" + port + "/" + nomDeLaBase ; urlJdbc = urlJdbc + "?user=" + login + "&password=" + password ; return urlJdbc ; }

194

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

private boolean etablirConnexion() { boolean statusConnexion = false; try { Class.forName("com.mysql.jdbc.Driver"); urlJdbc=construireUrlJdbc(); cnx=DriverManager.getConnection(urlJdbc); statusConnexion = true; } catch ( Exception e ) { statusConnexion = false; System.out.println(e); } return statusConnexion; } }

Mise en place dun tube de communication


Une fois la connexion tablie, il sagit denvoyer des requtes vers la base de donnes. Les requtes sont transmises laide dun objet de liaison Java qui sait communiquer du monde JSP vers le monde MySQL et inversement. Concrtement, la mise en place de cette liaison seffectue travers un objet de type Statement. La classe Statement est une interface dnie par Java.
Une interface est une classe particulire qui dnit les diffrents types de comportements sans en dcrire rellement les actions. Les mthodes dnies par un Statement ne peuvent tre prdnies par le langage Java. Une requte, cest--dire un comportement associ un Statement, ne peut tre dcrite que par le programmeur en fonction de ce que lapplication doit raliser.

Un objet de type Statement est comparable un tube (ou, dans le jargon informatique, pipeline). Ce tube est bidirectionnel, il permet de communiquer dans les deux sens. Lapplication JSP envoie une requte vers la base de donnes, via le tube. En retour, la base transmet le ou les rsultats par le mme canal. Pour crer un objet Statement, il suft de faire appel la mthode createStatement() dnie lintrieur de la classe Connection. Lorsque cet objet est cr, le tube de communication reste ouvert tant que lobjet est charg en mmoire.

ditions Eyrolles

195

partie n 2

Concepts avancs

Figure 5-6

Une fois la connexion tablie , le JSP demande la cration dune communication laide dun objet de type Statement.

Cration du composant JavaBean DBLien Examinons travers un exemple comment crer et grer un objet de type Statement. Pour cela, nous allons crer un composant JavaBean nomm DBLien.
Les deux JavaBeans DBConnexion et DBLien peuvent tre runis en un seul JavaBean qui gre tous les aspects relatifs la mise en place dune communication JSP/base de donnes. Pour des raisons pdagogiques, nous avons prfr les prsenter sparment.

La mthode mtier du JavaBean DBLien fait appel la mthode createStatement() de la faon suivante :
private boolean construireStatement (Connection cnx) { boolean statusStatement = false; try { lien=cnx.createStatement(); statusStatement = true ; } catch ( Exception e ) { statusStatement = false; System.out.println(e); } return statusStatement; }

La mthode construireStatement() appelle la mthode createStatement() travers lobjet cnx de type Connection. Cet objet est cr par le composant DBConnexion. La mthode createStatement() dtecte les erreurs ventuelles de communication, il convient donc de linsrer dans une structure try-catch. Si aucune erreur nest dtecte, le

196

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

rsultat de lappel de createStatement() est stock dans un objet nomm lien de type Statement et la variable boolenne statusStatement prend la valeur true. En cas derreur lors de la cration du tube de communication, le bloc catch met false la variable boolenne statusStatement et crit le type derreur dans le chier C:\Program Files\Apache Software Foundation\Tomcat 5.0\logs\stderr (Windows) ou /usr/local/jakarta-tomcat-5.0.25/logs/stderr (Linux). Proprits et mthodes daccs du composant DBLien Lobjet lien est dni comme tant une proprit du composant DBLien. La proprit lien est cre par le composant DBLien. Elle doit tre transmise aux composants qui soccupent de grer les requtes vers la base de donnes. Cette proprit doit donc tre accessible en lecture, comme le montre la mthode suivante :
public Statement getLien(Connection cnx) { if (construitStatement(cnx)) { return lien; } else { return null; } }

Nous voyons ici que la mthode getLien() retourne lobjet lien ou lobjet null en fonction du retour de la mthode mtier construireStatement(). Elle prend galement en paramtre lobjet cnx de faon ce que ce dernier, cr par le composant DBConnexion, soit transmis via le JSP au composant DBLien. Le code source complet
/* Fichier : DBLien.java Class : DBLien Package : exemples.ch5 */ package Exemples.Ch5 ; import java.io.Serializable ; import java.sql.*; public class DBLien implements java.io.Serializable { //Dfinition des proprits private Statement lien = null;

ditions Eyrolles

197

partie n 2

Concepts avancs

// Mthodes daccs en lecture public Statement getLien(Connection cnx) { if (construireStatement(cnx)) { return lien; } else { return null; } } // Mthodes invisibles private boolean construireStatement (Connection cnx) { boolean statusStatement = false; try { lien=cnx.createStatement(); statusStatement = true ; } catch ( Exception e ) { statusStatement = false; System.out.println(e); } return statusStatement; } }

Transmission de requtes entre un JSP et une base de donnes


Les deux composants DBConnexion et DBLien sont maintenant notre disposition pour mettre en relation lapplication JSP avec la base de donnes. La page JSP doit donc crer deux objets de type DBConnexion et DBLien et attribuer les valeurs appropries aux diffrentes proprits. Pour tablir la connexion, le JSP doit galement faire appel aux diffrentes mthodes daccs dnies au sein des composants. Cration et initialisation des objets DBConnexion et DBLien En tout premier lieu, la page JSP doit importer les deux classes ncessaires la manipulation dun objet Connection et dun objet Statement :
<%@ page import="java.sql.Connection" %> <%@ page import="java.sql.Statement" %>

Ensuite vient la cration des deux objets correspondant aux deux composants. Dans un premier temps, les objets dbcnx et dblien sont crs grce aux instructions :
<!--// DBConnexion Bean--> <jsp:useBean id="dbcnx" class="Exemples.Ch5.DBConnexion" />

198

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

<!--// DBLien Bean --> <jsp:useBean id="dblien" class="Exemples.Ch5.DBLien" />

Cela fait, il convient dinitialiser lobjet dbcnx de faon mettre en place la connexion. Cette initialisation seffectue grce aux instructions :
<!--// Code dinitialisation //--> <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 simplier, nous avons choisi dinitialiser les proprits de lobjet dbcnx lintrieur mme du JSP. Lutilisateur qui se connecte a pour login et pour mot de passe jspuser. Pour autoriser la connexion dautres utilisateurs, vous devez crer un formulaire de saisie du login et du mot de passe avant toute initialisation.
Le nom des utilisateurs et celui de la base de donnes sont dnis par ladministrateur de la base de donnes lors de sa mise en place. Pour notre cas, reportez-vous la procdure dinstallation de MySQL dcrite en annexe Contenu et exploitation du CD-Rom , la section La cration des bases systme MySQL .

La connexion stablit sur le port 3306 en local (localhost) sur la base de donnes portant le nom livrejsp.
Pour lobjet dblien, aucune proprit nest initialiser, la seule proprit lien tant initialise par le composant lui-mme.

Accder aux proprits des objets DBConnexion et DBLien Aprs cration et initialisation, la connexion stablit travers lobjet dbcnx. Le rsultat de cette connexion est enregistr dans lobjet cnx, comme le montrent les instructions suivantes :
Connection cnx = dbcnx.getCnx(); if (cnx == null) { out.println("<font color=red>Connexion impossible : " + cnx + "</font>"); } else { out.println("<font color=green>Connexion tablie : " + cnx + "</font>"); }

ditions Eyrolles

199

partie n 2

Concepts avancs

Lors de lexcution de ces instructions, le serveur envoie sur le ux HTTP, grce la mthode out.println(), un message conrmant ou inrmant lobtention de la connexion. Pour nir, la mise en place du tube de communication seffectue grce aux instructions suivantes :
Statement lien = dblien.getLien(cnx); if (lien == null) { out.println("<font color=red>KO : " + lien + "</font>"); } else { out.println("<font color=green>OK : " + lien + "</font>"); }

Lobjet lien matrialise le tube de communication. Il est cr par lintermdiaire de lobjet dblien et laide de lobjet cnx. Comme prcdemment, lors de lexcution de ces instructions, le serveur envoie sur le ux HTTP un message conrmant ou inrmant la mise en place du tube de communication. Le code source complet Les instructions relatives la connexion et la mise en place du tube de communication sont crites en Java. Elles sont places entre des balises <% et %> (zones grises).
<!-# Fichier : connexionLien.jsp # Description : # Se connecte et cre un tube de communication # avec la base de donnes livrejsp # login et mot de passe par dfaut : jspuser # JavaBeans : DBConnexion, DBLien --> <!-- La page JSP manipule des objets de type Connection et Statement --> <%@ page import="java.sql.Connection" %> <%@ page import="java.sql.Statement" %> <!--// DBConnexion Bean--> <jsp:useBean id="dbcnx" class="Exemples.Ch5.DBConnexion"> <!--// Code dinitialisation //--> <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

chapitre n 5

Interroger une base de donnes

<jsp:setProperty name= "dbcnx" property="nomDeLaBase" value="livrejsp"/> </jsp:useBean> <!--// DBLien Bean --> <jsp:useBean id="dblien" class="Exemples.Ch5.DBLien"/> <html> <body> <table width=700><tr><td> <h1><font face=arial>Slection sur la table Livres</h1> <h3><font face=arial>La connexion avec la base de donnes</h3> <font face=arial size=2 color=black>1re tape : Cration dune connexion vers la base de donnes :<br> <% // Rcupration de la connexion Connection cnx = dbcnx.getCnx(); if (cnx == null) { out.println("<font color=red>Connexion impossible : " + cnx + "</font>"); } else { out.println("<font color=green>Connexion tablie : " + cnx + "</font>"); } %> <br><br> <font face=arial size=2 color=black>2me tape : Cration dun tube de communication :<br> <% // Cration du tube de communication avec la base de donnes Statement lien = dblien.getLien(cnx); if (lien == null) { out.println("<font color=red>Communication impossible : " + lien + "</font>"); } else { out.println("<font color=green>Communication tablie : " + lien + "</font>"); } %>

ditions Eyrolles

201

partie n 2

Concepts avancs

</td></tr></table> </body> </html>

La gure 5-7 prsente le rsultat de lexcution du programme connexionLien.jsp.

Figure 5-7

Le programme connexionLien.jsp afche les diffrentes tapes ncessaires la connexion dune base de donnes MySQL.

Consulter ou modier une base de donnes ?


Aprs la connexion et la mise en place dun tube de communication, nous pouvons effectuer diffrents traitements sur la base de donnes. Il existe deux types de traitement : q la consultation, qui permet de savoir si, par exemple, un lment particulier est enregistr dans la base ; q la modication, pour insrer, mettre jour ou supprimer un lment de la base. JSP propose deux mthodes pour raliser ces traitements, executeQuery() et execute Update(). Ces deux mthodes sexcutent travers le tube de communication Statement cr dans la section prcdente (voir gure 5-8).

Modier la base de donnes


Pour modier le contenu dune base de donnes, il convient dutiliser la mthode execute Update(). Grce cette dernire, les requtes MySQL INSERT, UPDATE et DELETE sont excutables lintrieur dun programme JSP. La requte INSERT permet linsertion de lignes supplmentaires dans une ou plusieurs tables, alors que la requte UPDATE autorise la mise jour dune ligne dune table, et que la requte DELETE est utilise pour supprimer une ou plusieurs lignes dune table de la base de donnes.

202

ditions Eyrolles

chapitre n 5

Interroger une base de donnes

Figure 5-8 Lorsque le tube de communication est mis en place, les requtes sont transmises la base de donnes et, sil y a un rsultat, celui-ci est retourn au navigateur .

La syntaxe dutilisation de la mthode executeUpdate(). est la suivante :


int valeur = lien.executeUpdate(commande);

o :
q

lien est un objet de type Statement et reprsente le tube de communication dcrit prcdemment. En appliquant la mthode lobjet lien, nous sommes srs que la

commande est excute lintrieur du tube de communication.


q

commande est une chane de caractres qui contient la commande MySQL dinsertion, de

mise jour ou de suppression.


q

valeur est la valeur de retour de la mthode. Elle reprsente le nombre de lignes insres, mises jour ou supprimes, en fonction de la commande excute.

Exemple : insertion dun nouveau livre dans la table Livres Lobjectif est ici dinsrer un nouveau livre dans la table Livres. Pour cela, nous devons raliser les cinq tapes suivantes (voir gure 5-9) : Mise en page dun formulaire contenant les attributs de la table Livres. Validation des donnes insrer dans la base de donnes laide dun composant Java Bean. Rcupration des donnes transmises par le composant JavaBean. Connexion la base de donnes et ouverture dun tube de communication. Insertion des donnes laide de la commande executeQuery(). Les quatre premires tapes ont dj t ralises, soit au cours du chapitre 4, soit lors de la section prcdente de ce chapitre. Notre tche consiste donc rcuprer tous les chiers utiles la ralisation de notre application et les assembler correctement (voir gure 5-9).

ditions Eyrolles

203

partie n 2

Concepts avancs

Figure 5-9

Les cinq tapes permettant dinsrer un livre dans la base de donnes.

Ltape 1 a pour nalit de construire un formulaire HTML qui prsente les diffrents champs de saisie correspondant aux champs de la table Livres, comme le montre la gure 5-10.

Figure 5-10

Formulaire de saisie permettant denregistrer les informations relatives un livre.

204

ditions Eyrolles