Précédent   Forum du club des développeurs et IT Pro > Java > Développement Web en Java > Servlets/JSP > Taglibs
Taglibs Forum d'entraide sur les taglibs / bibliothèques de balises (JSTL, DisplayTag, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 14/10/2012, 00h05   #1
machipot
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 180
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 180
Points : 36
Points : 36
Par défaut Transmettre un paramètre à une requête

Bonjour,

Je ne vois pas comment mettre une String dans la clause WHERE.

Je récupère au niveau d'une page JSP un paramètre soumis par la page d'authentification, puis je lance un select avec le paramètre reçu par la seconde page.

Voici mon bout de code:
Code :
1
2
3
4
5
6
7
<c:set var="newUsername" value="${!empty param.username}"/>
<%--<c:out value="${param.username}"/> --%>
<sql:query var="applicantInfo" scope="session" dataSource="jdbc:odbc:LeaveRequest">
    SELECT UserName, FirstName, LastName, Email, Tel FROM Users 
    WHERE UserName = ? <sql:param value="${newUsername}"/>
</sql:query>
<c:set var="applicantDetails" value="${applicantInfo.rows[0]}"/>
au niveau de WHERE, ça ne fonctionne pas parce que le paramètre est une chaine de caractères.

Quelqu'un saurait-il m'indiquer comment faire ?

Merci d'avance pour votre aide.
machipot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2012, 16h18   #2
machipot
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 180
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 180
Points : 36
Points : 36
Voila, Je reformule ma requête pour être plus claire.
Qui a une idée, comment utiliser une variable (chaine de caractères) dans une tag sql:query?
Premièrement, j'assigne une chaine (qui vient d'un paramètre) a une variable
Code :
<c:set var="newUsername" value="${!empty param.username}"/>
Puis, j'utilise cette variable au niveau du WHERE
Code :
1
2
3
4
<sql:query var="applicantInfo" scope="session" dataSource="jdbc:odbc:LeaveRequest">
    SELECT UserName, FirstName, LastName, Email, Tel FROM Users 
    WHERE UserName =  ? <sql:param value="${newUsername}"/>
</sql:query>
Pourquoi le select ne fonctionne pas?
Merci.
machipot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2012, 23h18   #3
Mishulyna
Membre habitué
 
Femme
Inscription : novembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations forums :
Inscription : novembre 2008
Messages : 124
Points : 133
Points : 133
Bonjour,

Je doute fort que ça pourrait vous aider mais généralement en SQL on utilise le mot reservé "LIKE" pour comparer des chaînes de caractères...
Mishulyna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 14h24   #4
machipot
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 180
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 180
Points : 36
Points : 36
Bonjour Mishulyna,

J'ai essayé ave LIKE, mais ça ne fonctionne tuojours pas.
erreur:
SELECT Email FROM Users
WHERE Group LIKE ?
: [Microsoft][ODBC Microsoft Access Driver] Syntax error in WHERE clause.


le parametre du WHERE est une string, c'est peut etre la raison que ça marche pas!!!!
machipot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 18h44   #5
Mishulyna
Membre habitué
 
Femme
Inscription : novembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations forums :
Inscription : novembre 2008
Messages : 124
Points : 133
Points : 133
Bonjour machipot,

La recherche de l'utilisateur fonctionnait tout à l'heure, alors "LIKE" n'est pas indispensable, tant mieux: http://www.developpez.net/forums/d12...omprehensible/

As-tu plusieurs Users du même UserName? "Group" est une valeur unique par utilisateur ou tu recherches une liste d'utilisateurs appartenant au même Group (peut-être il faudrait prévoir une boucle quelque part)?
Mishulyna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 15h28   #6
machipot
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 180
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 180
Points : 36
Points : 36
Mishulyna,

J’ai qu'un seul et unique user Name dans la table, mais c'est le SQL qui donne une erreur. Je ne trouve pas comment faire la différence entre un entier et une chaine de caractères au niveau du WHERE.
Est-ce que le paramètre se fait de la même façon dans les deux cas de figure?
Integer, ça marche:
Code :
1
2
3
4
5
 
<sql:query var="applicantInfo" scope="session" dataSource="jdbc:odbc:LeaveRequest">
    SELECT UserName, FirstName, LastName, Email, Tel FROM Users 
    WHERE EmployeeID = ? <sql:param value="${sessionScope.employeeID}"/>
</sql:query>
string ne marche pas!!!
Code :
1
2
3
4
5
 
<sql:query var="supervisorsInfo" scope="session" dataSource="jdbc:odbc:LeaveRequest">
    SELECT Email FROM Users 
    WHERE Group = ? <sql:param value="${sessionScope.group}"/>
</sql:query>
machipot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 18h06   #7
Mishulyna
Membre habitué
 
Femme
Inscription : novembre 2008
Messages : 124
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Belgique

Informations forums :
Inscription : novembre 2008
Messages : 124
Points : 133
Points : 133
Désolée, j'avais lu ça et compris que ça fonctionnait...

Citation:
Envoyé par machipot Voir le message
Bonjour,

J'aimerais comprendre pourquoi le code SQL suivant fonctionne :
Code :
1
2
3
4
5
<%request.getSession();%>
<sql:query var="applicantInfo" scope="session" dataSource="jdbc:odbc:LeaveRequest">
    SELECT UserName, FirstName, LastName, Email, Tel FROM Users 
    WHERE UserName = ? <sql:param value="${sessionScope.sessionUsername}"  />
</sql:query>
...

Je viens de faire un tour sur Google, j'ai trouvé:

Citation:
The JSP expression language defines the following literals:

•Boolean: true and false
•Integer: as in Java
•Floating point: as in Java
String: with single and double quotes; " is escaped as \", ' is escaped as \', and \ is escaped as \\.
•Null: null
il faudrait peut-être préciser d'une façon quelconque que le paramètre "${sessionScope.group}" est une variable de type String et pas de type Integer comme "${sessionScope.employeeID}" ?
Mishulyna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2012, 19h03   #8
machipot
Nouveau Membre du Club
 
Inscription : septembre 2006
Messages : 180
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 180
Points : 36
Points : 36
c'est ça que je n'arrive pas a figurer...
j'ai beau cherché dans les tag jstl, sans succè...

A+
machipot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2012, 14h04   #9
Rook13
Invité de passage
 
Homme
Inscription : décembre 2012
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2012
Messages : 2
Points : 1
Points : 1
C'est peut-être un peu tard et je ne sais pas si ça va marcher non plus mais est-ce que t'as essayé un truc du genre:

Code :
WHERE UserName = ? <sql:param value="\'${sessionScope.sessionUsername}\'"
En effet, quand tu utilises un WHERE en sql avec un varchar2 tu dois mettre ton varchar2 entre '...'

Pour ton exemple:

Code :
1
2
SELECT UserName, FirstName, LastName, Email, Tel FROM Users 
    WHERE UserName = 'Toto'
Rook13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h27.


 
 
 
 
Partenaires

Hébergement Web