Si tu ne trouves pas comment faire ton affichage avec une EL, tu peux aussi le faire en java :
Code:<a class="nom"><%=conges.getUsers().getNom()+" "+conges.getUsers().getPrenom()%></a>
Version imprimable
Si tu ne trouves pas comment faire ton affichage avec une EL, tu peux aussi le faire en java :
Code:<a class="nom"><%=conges.getUsers().getNom()+" "+conges.getUsers().getPrenom()%></a>
On ne peux pas "additionner" des string en EL et je ne vois pas pourquoi tu te casse la nenette avec de la concaténation.
Le plus simple, c'est de faire
Code:<a class="nom">${conges.users.nom} ${conges.users.prenom}</a>
Merci sa fonctionne
J'ai plus qu'à m'occuper de mes dates pour avoir un affiche au format français
J'ai utiliser le simpleDateFormat pour mettre en Français mais sa ne veut pas m'afficher mes dates. J'ai un println dans la console et la conversion se passe bien
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 <% SimpleDateFormat formater = new SimpleDateFormat("dd-MM-yyyy"); if(users.getRank().equals("admin") || users.getRank().equals("root")){ List<Conges> congeStatut = new ArrayList<Conges>(); congeStatut = (List<Conges>)request.getAttribute("congeStatut"); %> <c:forEach items="${ congeStatut }" var="conges"> <%Conges conges = (Conges)pageContext.getAttribute("conges");%> <tr> <td> <% if(!conges.getCommentaires().equals("")){ %> <a class="name" rel="tooltip" data-original-title="${conges.getCommentaires()}" href="#">${conges.getUsers().getNom()} ${conges.getUsers().getPrenom()} <i class="icon-comment"></i></a> <% }else{ %> <a class="nom">${conges.getUsers().getNom()} ${conges.getUsers().getPrenom()}</a> <% } %> <span class="subtext">${conges.getUsers().getFonction()}</span> </td> <% String dateDepot = formater.format(conges.getDepot()); %> <td>${dateDepot}</td>
"Ça veut pas afficher mes dates", ça ne veut rien dire : quand tu poses une question, dis quelle exception tu obtiens, ou quel comportement (ici affichage) tu obtiens et quel comportement tu voudrais obtenir.
Là, tu déclares une variable dans le code java (par scriptlet) :
et la tu affiches une expression de type EL/JSTL par :Code:
1
2
3 <% String dateDepot = formater.format(conges.getDepot()); %>
Tu mélanges deux choses. Pour créer une variable affichable par EL, il faut utiliser c:set et l'afficher par c:out ... ON peut passer des valeurs entre les deux domaines (une variable jstl c'est un attribut dans un context (scope)).Code:<td>${dateDepot}</td>
Tu peux également directement mettre dans le flux de la page générée par la jsp par :
Tu devrais peut être reprendre les tutoriels à la base pour bien comprendre les jsp, les scriplets et jstl.Code:<%=formater.format(conges.getDepot())%>
J'ai réussi à afficher mes dates correctement
Maintenant je dois voir comment je fait pour appeler une requete et aussi pour ouvrir un fichier PDF:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373 <%@ include file="includes/header.jsp"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="fr.intranet.models.*"%> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <% Users users = (Users) request.getSession().getAttribute("util"); if (users == null) { response.sendRedirect("index"); }else{ %> <!-- sidebar --> <div id="sidebar-nav"> <ul id="dashboard-menu"> <li class="active"> <div class="pointer"> <div class="arrow"></div> <div class="arrow_border"></div> </div> <a href="accueil"> <i class="icon-home"></i> <span>Accueil</span> </a> </li> <% if(!users.getRank().equals("utilisateur")){ %> <li> <a class="dropdown-toggle" href="#"> <i class="icon-folder-open-alt"></i> <span>Client</span> <i class="icon-chevron-down"></i> </a> <ul class="submenu"> <li><a href="listeclient">Consultation</a></li> <li><a href="newclient">Création</a></li> </ul> </li> <% }else{ %> <li> <a href="listeclient"> <i class="icon-folder-open-alt"></i> <span>Client</span> </a> </li> <% } if(!users.getRank().equals("utilisateur")){ %> <li> <a class="dropdown-toggle" href="#"> <i>@</i> <span>Site</span> <i class="icon-chevron-down"></i> </a> <ul class="submenu"> <li><a href="listesite">Consultation</a></li> <li><a href="plussite">Création</a></li> </ul> </li> <% }else{ %> <li> <a href="listesite"> <i>@</i> <span>Site</span> </a> </li> <% } if(!users.getRank().equals("utilisateur")){ %> <li> <a class="dropdown-toggle" href="#"> <i class="icon-phone"></i> <span>Contact</span> <i class="icon-chevron-down"></i> </a> <ul class="submenu"> <li><a href="listecontact">Consultation</a></li> <li><a href="pluscontact">Création</a></li> </ul> </li> <% }else{ %> <li> <a href="listecontact"> <i class="icon-phone"></i> <span>Contact</span> </a> </li> <% } if(!users.getRank().equals("utilisateur")){ %> <li> <a class="dropdown-toggle" href="#"> <i class="icon-book"></i> <span>Freelance</span> <i class="icon-chevron-down"></i> </a> <ul class="submenu"> <li><a href="freelance">Consultation</a></li> <li><a href="newfreelance">Création</a></li> </ul> </li> <% }else{ %> <li> <a href="freelance"> <i class="icon-book"></i> <span>Freelance</span> </a> </li> <% } %> <li> <a href="frais"> <i class="icon-euro"></i> <span>Note frais</span> </a> </li> <li> <a class="dropdown-toggle" href="#"> <i class="icon-plane"></i> <span>Congés</span> <i class="icon-chevron-down"></i> </a> <ul class="submenu"> <li><a href="conges">Consultation</a></li> <li><a href="newconges">Demande</a></li> </ul> </li> <% if(users.getRank().equals("admin") || users.getRank().equals("root")){ %> <li> <a class="dropdown-toggle" href="#"> <i class="icon-group"></i> <span>Utilisateurs</span> <i class="icon-chevron-down"></i> </a> <ul class="submenu"> <li><a href="user">Consultation</a></li> <li><a href="newuser">Création</a></li> </ul> </li> <% } %> <li> <a href="corbeille"> <i class="icon-trash"></i> <span>Corbeille</span> </a> </li> </ul> </div> <!-- end sidebar --> <!--script--> <script type="text/javascript" src="./assets/js/jquery.uitablefilter.js"></script> <script> //Fonction pour filtre $(function() { var theTable = $('table.filter_conges'); $("#filter").keyup(function() { console.log(this.value); $.uiTableFilter( theTable, this.value ); }) }); //Fonction pour filtre $(function() { var theTable = $('table.filter_fiche'); $("#filter1").keyup(function() { console.log(this.value); $.uiTableFilter( theTable, this.value ); }) }); //Fonction pour info bulle $(function (){ $('a').tooltip({placement:'top'}); }); </script> <!-- main container --> <div class="content"> <div id="pad-wrapper" class="users-list"> <!-- SESSION CREATION CONGE A AJOUTER --> <!-- table sample --> <!-- the script for the toggle all checkboxes from header is located in js/theme.js --> <div class="row head"> <div class="col-md-12"> <h4>Demande de congés</h4> </div> </div> <div class="row filter-block"> <div class="pull-right"> <input type="text" name = "filter" id="filter" class="search" value ="" placeholder="Rechercher un congés"> <a class="btn-flat new-product" href="newconges.php">+ Demande congés</a> </div> </div> <br> <!-- Users table --> <div class="row"> <div class="col-md-12"> <table class="table table-hover filter_conges"> <thead> <tr> <th class="col-md-2 sortable"> Salarie </th> <th class="col-md-2 sortable"> <span class="line"></span>Depot </th> <th class="col-md-2 sortable"> <span class="line"></span>Type </th> <th class="col-md-2 sortable"> <span class="line"></span>Debut </th> <th class="col-md-2 sortable"> <span class="line"></span>Fin </th> <th class="col-md-2 sortable"> <span class="line"></span>Statut </th> </tr> </thead> <tbody> <% if(users.getRank().equals("admin") || users.getRank().equals("root")){ List<Conges> congeStatut = new ArrayList<Conges>(); congeStatut = (List<Conges>)request.getAttribute("congeStatut"); %> <c:forEach items="${ congeStatut }" var="conges"> <%Conges conges = (Conges)pageContext.getAttribute("conges");%> <tr> <td> <% if(!conges.getCommentaires().equals("")){ %> <a class="name" rel="tooltip" data-original-title="${conges.getCommentaires()}" href="#">${conges.getUsers().getNom()} ${conges.getUsers().getPrenom()} <i class="icon-comment"></i></a> <% }else{ %> <a class="nom">${conges.getUsers().getNom()} ${conges.getUsers().getPrenom()}</a> <% } %> <span class="subtext">${conges.getUsers().getFonction()}</span> </td> <td><fmt:formatDate value="${conges.getDepot()}" pattern="dd/MM/yyyy"/></td> <td>${conges.getTypeConges()}</td> <td><fmt:formatDate value="${conges.getDateDbt()}" pattern="dd/MM/yyyy"/></td> <td><fmt:formatDate value="${conges.getDateFin()}" pattern="dd/MM/yyyy"/></td> <td> <% if(conges.getStatut().equals("Annulé")){ %> <a class="gras" href="requete/dltconges?idConges=${conges.getId()}" onclick="return confirm('Cette annulation supprimera définitivement le congé. Etes vous sûr de vouloir faire cette action ?');"><span class="label label-warning">Annulé</span></a> <% }else{ %> <table> <tr> <td><a class="gras" href="pdf/conges?idConges=${conges.getId()}" target="_blank" onclick="window.location.href='requete/accepte?idConges=${conges.getId()}'"><span class="label label-success">Accepté</span></a></td> <td> </td> <td><a class="gras" href="requete/refuse?idConges=${conges.getId()}"><span class="label label-danger">Refusé</span></a></td> </tr> </table> <% } %> </td> </tr> </c:forEach> <% }else{ List<Conges> congeUser = new ArrayList<Conges>(); congeUser = (List<Conges>)request.getAttribute("congeUser"); %> <c:forEach items="${ congeUser }" var="conges"> <%Conges conges = (Conges)pageContext.getAttribute("conges");%> <tr> <td> <a class="nom">${conges.getUsers().getNom()} ${conges.getUsers().getPrenom()}</a> <span class="subtext">${conges.getUsers().getFonction()}</span> </td> <td><fmt:formatDate value="${conges.getDepot()}" pattern="dd/MM/yyyy"/></td> <td>${conges.getTypeConges()}</td> <td><fmt:formatDate value="${conges.getDateDbt()}" pattern="dd/MM/yyyy"/></td> <td><fmt:formatDate value="${conges.getDateFin()}" pattern="dd/MM/yyyy"/></td> <td> <div class="icone"> <span> <% if(conges.getStatut().equals("Accepté")){ %> <span class="label label-success">${conges.getStatut()}</span> <% } if(conges.getStatut().equals("Refusé")){ %> <span class="label label-danger">${conges.getStatut()}</span> <% } if(conges.getStatut().equals("En attente")){ %> <span class="label label-info">${conges.getStatut()}</span> <% } if(conges.getStatut().equals("Annulé")){ %> <span class="label label-warning">${conges.getStatut()}</span> <% } %> <fmt:formatDate value="${conges.getDateAction()}" pattern="dd/MM/yyyy"/> </span> <ul class="actions"> <% if(conges.getStatut().equals("Accepté")){ %> <li class="last"><a rel="tooltip" href="pdf/conges?idConges=${conges.getId()}" onclick="window.open(this.href); return false;" data-original-title="PDF"><i class="attach"></i></a></li> <% } %> </ul> </div> </td> </tr> </c:forEach> <% } %> </tbody> </table> </div> </div> </div> </div> </div> <% } %> <!-- end main container --> </body> </html>
Avant j'avais ceci en php:Code:<td><a class="gras" href="pdf/conges?idConges=${conges.getId()}" target="_blank" onclick="window.location.href='requete/accepte?idConges=${conges.getId()}'"><span class="label label-success">Accepté</span></a></td>
Je pense que je doit passer par ma servlet mais je vois pas comment l'appeler et ou mettre le code dedans car c'est ni du doGet ou du doPost pour moiCode:<td><a class="gras" href="pdf/conges.php?idConges=<?php echo $row1['idConges']?>" target="_blank" onclick="window.location.href='requete/accepte.php?idConges=<?php echo $row1['idConges']?>'"><span class="label label-success">Accepté</span></a></td>
Ben ce que tu nous montre en tout cas, c'est un Get, que ce soit ta version php ou java, je ne vois pas ce que tu veux que ce soit d'autre. Ce n'est certainement ni un PUt ni un HEAD :aie:
D'accord mais comment je doit faire pour appeler ma servlet car je vais faire une méthode dans ma classe DAO qui contiendra la requête sql et cette méthode doit être appeler seulement quand j'aurais cliquer sur le bouton. De même pour la création d'un fichier PDF
Par exemple pour ici je fait comment car je ne vois pas trop
Code:onclick="window.location.href='requete/accepte.php?idConges=<?php echo $row1['idConges']?>'">
par exemple.Code:onclick="window.location.href='chemin/vers/ta/servlet?idConges=${row1['idConges']}'">
Mais sérieusement, foutre un onclick sur un <A>qui change l'url dans le browser, c'est totalement idiot. C'est à ça que sert l'attribut href du a, pas besoin de javascript qui fasse double emploi
Code:<a href="chemin/vers/ta/servlet?idConges=${row1['idConges']}">cliquez ici</a>
D'accord
Mais ma méthode que je vais créer dans ma classe DAO, je doit aussi l'appeler dans la servlet mais quand je vais cliquer sur le bouton dans ma jsp comment elle va savoir ce qu'elle doit appeler comme méthode car je vais en appeler plusieurs dans ma servlet
Ben c'est toi le programmeur, c'est quand même à toi de savoir quelles méthodes t'as besoin d'appeler pour effectuer ton travail :weird:
Dans ma jsp aussi
E php je mettait directement le lien avec le script que je devais appeler alors que la j'ai une servlet pour ma page entière
Je ne vois pas le problème, ici t'as un lien vers la servlet qui fais le travail. C'est exactement comme en php.
En php,
Pour ligne:
j'appeler ceci:Code:<td><a class="gras" href="pdf/conges.php?idConges=<?php echo $row1['idConges']?>" target="_blank" onclick="window.location.href='requete/accepte.php?idConges=<?php echo $row1['idConges']?>'"><span class="label label-success">Accepté</span></a></td>
Pour celle ci:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php ob_start(); session_start(); if (isset($_SESSION["pseudo"]) == false): header("Location:index.php"); endif; include("../includes/accesBDD.php"); //Récupération de l'id du Congés $idConges = $_GET['idConges']; //Récupération la date du jour et l'heure actuelle $date = date("Y-m-j H:i:s"); //Requête qui accepte les congés $req1 = "Update conges Set statut = :unStatut, dateAction = :uneDate Where conges.id = ".$idConges; //Préparation de la requête $res1 = $connexion->prepare($req1); //Exécution de la requête $res1->execute(array(':unStatut'=>'Accepté', ':uneDate'=>$date)); //Et redirection vers la page accueil.php pour rafraichir la liste header("location:../accueil.php" ); ?>
ce script là:Code:<td><a class="gras" href="requete/refuse.php?idConges=<?php echo $row1['idConges']?>"><span class="label label-danger">Refusé</span></a></td>
Toutes ses requête vont se transformer en plusieurs méthodes dans ma classe CongesDAO.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php ob_start(); session_start(); if (isset($_SESSION["pseudo"]) == false): header("Location:index.php"); endif; include("../includes/accesBDD.php"); //Récupération de l'id du Congés $idConges = $_GET['idConges']; //Récupération la date du jour et l'heure actuelle $date = date("Y-m-j H:i:s"); //Requête qui refuse les congés $req1 = "Update conges Set statut = :unStatut, dateAction = :uneDate Where conges.id = ".$idConges; //Préparation de la requête $res1 = $connexion->prepare($req1); //Exécution de la requête $res1->execute(array(':unStatut'=>'Refusé', ':uneDate'=>$date)); //Et redirection vers la page accueil.php pour rafraichir la liste header("location:../accueil.php" ); ?>
Mais après ces méthodes je vais les mettre dans ma servlet mais comment faire pour que quand je clique sur le bouton dans la jsp, elle sache qu'elle méthode appeler et faut aussi que je puisse faire les redirection comme j'avais fais
Ben dans ta servlet "refuse" tu fera un dao.refuser(identifiantDuConge) et dans accepter tu fera un dao.accepter(identifiantduConge), j'ai franchement du mal à comprendre sur quoi tu bloque là.
Pour les redirections, tu as response.sendRedirect()
A la je comprend mieux, je doit faire une servlet pour chaque
Je pensais que je mettait tout dans ma servlet accueil comme les bouton se trouve sur l'accueil
Et donc je doit les mettre dans la méthode doGet de la Servlet?
Oui,
tu peux regrouper dans une seule servlet, mais alors il te faut un moyen de distinguer les actions. Par exemple un parapètre action=xxxx sur l'url en plus du id=xxxx
D'accord, Merci
Là j'ai un type char dans ma basse donc dans mon modèle j'ai mis l'attribut en type char. Mais là quand je récupère ma valeur dans ma requête il ne me propose pas de getChar
Donc je bloque ici:
A la place de getString, je souhaiterai avoir un getCharCode:ficheFrais.setMois(resultat.getString("mois"));
Tu nous explique comment tu stocke un mois dans un type char?? Tu leur donne des lettres de A à L ?
Pardon c'est pas pour mois mais pour une autre valeur. Mais je vois pas quand même comment on fait
Le type char de base de données, c'est un type String en fait (on écrit char(50) par exemple, pour avoir 50 caractères). Donc on récupère la valeur par getString(). Si le type est char(1), on pourrait récupérer la valeur de type char par getString().charAt(0), mais, premièrement, je ne vois pas trop à quoi ça servirait (de le gérer en char, ou Character, plutôt qu'en String), deuxièmement, il faudrait qu'on soit sûr qu'il y ait toujours un caractère (un au moins), et troisièmement à la moindre évolution du paramétrage de la base, on serait obligé de modifier le code, parce qu'un char ne suffirait plus.
Merci
J'ai cette requete qui ne passe pas en java alors qu'elle passe très bien dans mysql
Sa me retourne rien en java alors que dans mysql sa me retourne bien un enregistrementCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Date dateJour = new Date(); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); String dateJours = formater.format(dateJour); List<FicheFrais> lesFicheFrais = new ArrayList<FicheFrais>(); try{ statement = unAcces.connexionBdd().createStatement(); resultat = statement .executeQuery("SELECT FicheFrais.id AS idFiche, Users.id AS idUser, Users.nom AS nom, prenom, fonction, mois, annee, statut, CAST(SUM(coutTotal) + SUM(montantTTC) AS DECIMAL (15,2)) AS total, CAST(SUM(montantTVA) AS DECIMAL (15,2)) AS totalTVA" + "FROM DetailFiche" + "LEFT JOIN FicheFrais ON FicheFrais.id = DetailFiche.ficheFrais_id" + "LEFT JOIN Users ON Users.id = FicheFrais.users_id" + "WHERE statut = 'Validé' AND '"+dateJours+"'< DATE_ADD(dateValidation, INTERVAL 1 MONTH)" + "GROUP BY idFiche, idUser" + "ORDER BY annee, mois DESC");
Il n'y a pas de requête SQL et de requête Java : la requête que tu envoies via executeQuery en java est une requête SQL. Aussi faut-il exactement tester la même chose, c'est-à-dire la chaîne exacte que tu passes en argument de la méthode, pour comparer. C'est probablement à cause de la date mise "en dur", avec un format personnalisé, qui ne passe pas...
Pour éviter les déconvenues dues au formatage, et éviter d'autres problèmes, utilises plutôt un PreparedStatement, ce qui te permettra de passer la date en type java, sans avoir à te préoccuper de la forme que le SGBD s'attend à avoir. Sinon, il faut respecter cette forme très précisément.
EDIT : ce n'est peut être pas la date finalement, mais ça n'empêche pas d'utiliser quand même un PreparedStatement. Traces la chaîne exacte que tu envoies en requête SQL (avec System.out.println()) et tu verras tout de suite ce qui ne va pas (pour te mettre sur la voie, il manque des espaces quelque part à priori). Je suis (à moitié) étonné d'ailleurs que tu n'aies pas une SQLException : ne voyant pas le contenu du catch, je suppose que tu ne traces pas cette exception, donc tu ne voies pas que ta requête plante.
Sa fonctionne!!!
Il manquait les espaces après les guillemets
Ainsi, pas besoin de chipoter les dates et le formatage. De plus, rien ne te garantis que le serveur mysql utilise le format que tu as passé en paramètres (yyyy-MM-dd) car ce format dépend d'information de Locale liée à la connection DB et ça peut très bien êter différente entre JDBC et la ligne de commande mysql!Code:
1
2
3
4
5
6
7
8
9
10
11
12 Date dateJour = new Date(); List<FicheFrais> lesFicheFrais = new ArrayList<FicheFrais>(); try{ PreparedStatement ps = unAcces.connexionBdd().prepareStatement("SELECT FicheFrais.id AS idFiche, Users.id AS idUser, Users.nom AS nom, prenom, fonction, mois, annee, statut, CAST(SUM(coutTotal) + SUM(montantTTC) AS DECIMAL (15,2)) AS total, CAST(SUM(montantTVA) AS DECIMAL (15,2)) AS totalTVA" + " FROM DetailFiche" + " LEFT JOIN FicheFrais ON FicheFrais.id = DetailFiche.ficheFrais_id" + " LEFT JOIN Users ON Users.id = FicheFrais.users_id" + " WHERE statut = 'Validé' AND ? < DATE_ADD(dateValidation, INTERVAL 1 MONTH)" + " GROUP BY idFiche, idUser" + " ORDER BY annee, mois DESC"); ps.setDate(1,dateJour); resultat = ps.executeQuery(
Enfin, ton erreur de départ, c'est que tu as oublié des espaces entre les mots clés => syntax error en SQL. Si tu ne vois pas le message, c'est surement qu'après ce try{ t'as un catch à la con qui ne fais pas son boulot, je parie pour le catch vide!
EDIT: grillé :)