IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Taglibs Java Discussion :

Transmettre un paramètre à une requête


Sujet :

Taglibs Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 200
    Points : 73
    Points
    73
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 200
    Points : 73
    Points
    73
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <c:set var="newUsername" value="${!empty param.username}"/>
    Puis, j'utilise cette variable au niveau du WHERE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    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...
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 200
    Points : 73
    Points
    73
    Par défaut
    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!!!!

  5. #5
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    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)?
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 200
    Points : 73
    Points
    73
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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>

  7. #7
    Traductrice
    Avatar de Mishulyna
    Femme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2008
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 504
    Points : 7 840
    Points
    7 840
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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é:

    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}" ?
    Chaque fois que tu dis "je ne peux pas", n'oublie pas d'ajouter le mot "encore".

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 200
    Points : 73
    Points
    73
    Par défaut
    c'est ça que je n'arrive pas a figurer...
    j'ai beau cherché dans les tag jstl, sans succè...

    A+

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT UserName, FirstName, LastName, Email, Tel FROM Users 
        WHERE UserName = 'Toto'

Discussions similaires

  1. ajouter un paramètre à une requête
    Par Cram_N7 dans le forum Struts 2
    Réponses: 1
    Dernier message: 24/08/2009, 11h22
  2. paramétrer une requête grâce à un champ de formulaire
    Par fai-glon dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 14/04/2008, 18h41
  3. Passer un paramètre à une requête ?
    Par babu2001 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 27/10/2007, 00h05
  4. transmettre des paramètres à une form
    Par sundjata dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 07/08/2006, 19h02
  5. Réponses: 2
    Dernier message: 03/05/2006, 17h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo