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

Servlets/JSP Java Discussion :

Requête MySQL dans du JSP


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 39
    Par défaut Requête MySQL dans du JSP
    Bonjour

    j'ai beaucoup de mal a accéder à tous les parametres de ma base de donnée depuis une page JSP. Etant novice je suis loin de connaitre toutes les ficelles.
    J'aimerais avoir des conseils tout d'abord pour une situation précise.

    Apres avoir récupéré un identifiant de promotion dans une table je voudrais pouvoir l'utiliser comme critère de requête dans une seconde table.

    Pour l'instant jai testé le code suivant:

    <%
    // chargement du pilote, creation de "statement"
    Class.forName("com.mysql.jdbc.Driver");
    java.sql.Connection cnx = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/sondage", "xxxx", "xxxxxxx");
    java.sql.Statement req = cnx.createStatement();

    String promo = "";
    String filiere = "";


    // recuperation iddentifiant promotion
    java.sql.ResultSet pr = req.executeQuery("SELECT DISTINCT id_promo FROM sondage.apprenant WHERE mot_de_passe='0'");
    while (pr.next())
    {
    promo = pr.getString("id_promo");
    }
    pr.close();


    // recuperation nom filière

    java.sql.ResultSet fil = req.executeQuery("SELECT DISTINCT nom_filiere FROM sondage.promotion WHERE id_promo='" +promo+ "'");
    while (pr.next())
    {
    filiere = fil.getString("nom_filiere");
    }

    fil.close();
    req.close();
    cnx.close();
    %>


    J'obtient alors l'erreur suivante:

    org.apache.jasper.JasperException: Exception in JSP: /index.jsp:51

    48:
    49: // recuperation modules
    50: java.sql.ResultSet pr = req.executeQuery("SELECT DISTINCT id_promo FROM sondage.apprenant WHERE mot_de_passe='0'");
    51: while (pr.next())
    52: {
    53: promo = pr.getString("id_promo");
    54: out.print("<option value=");


    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)



    C'est peut etre une erreur toute bête ou alors je suis peu être très loin du compte, j'aimerais avoir des conseils et des suggestions.

    Merci d'avance.

  2. #2
    Membre éclairé Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Par défaut
    avez vous testez votre requéte directement sur le serveur BD ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 39
    Par défaut
    oui mes requêtes fonctionnent correctement en remplacant "promo" par une constante.

  4. #4
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    id_promo est un string ou un integer dans ta base?

    Si c'est un numeric essaye d'enlever les cotes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.sql.ResultSet fil = req.executeQuery("SELECT DISTINCT nom_filiere FROM sondage.promotion WHERE id_promo=" +promo);

  5. #5
    Membre Expert Avatar de maxf1
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 229
    Par défaut
    Non c'est bon, j'ai trouvé:


    Voilà ce que tu as ecrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // recuperation iddentifiant promotion
    java.sql.ResultSet pr = req.executeQuery("SELECT DISTINCT id_promo FROM sondage.apprenant WHERE mot_de_passe='0'");
    while (pr.next()) 
    {
    promo = pr.getString("id_promo");
    }
    pr.close();
    
    // recuperation nom filière
    
    java.sql.ResultSet fil = req.executeQuery("SELECT DISTINCT nom_filiere FROM sondage.promotion WHERE id_promo='" +promo+ "'");
    while (pr.next()) 
    {
    filiere = fil.getString("nom_filiere");
    }
    
    fil.close();
    req.close();
    cnx.close();
    Voilà ce qu'il faut ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    // recuperation iddentifiant promotion
    java.sql.ResultSet pr = req.executeQuery("SELECT DISTINCT id_promo FROM sondage.apprenant WHERE mot_de_passe='0'");
    while (pr.next()) 
    {
    promo = pr.getString("id_promo");
    }
    pr.close();
    
    // recuperation nom filière
    
    java.sql.ResultSet fil = req.executeQuery("SELECT DISTINCT nom_filiere FROM sondage.promotion WHERE id_promo='" +promo+ "'");
    while (fil.next()) 
    {
    filiere = fil.getString("nom_filiere");
    }
    
    fil.close();
    req.close();
    cnx.close();

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Effectivement, comme l'a bien vu maxf1, tu te trompes de variable pour la boucle.
    Cependant, à moins qu'il manque quelque chose dans le code fourni, ça ne devrait pas faire planter.
    De plus, il me semble que "jsp.org.apache.jasper.JasperException" concerne une erreur de compilation non ?

    Je ne vois pas une erreur sur la ligne 51...

    C'est le bon code ?

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] Copier le résultat d'une requête mysql dans un autre tableau PHP
    Par Didier100 dans le forum Langage
    Réponses: 6
    Dernier message: 30/05/2012, 23h59
  2. récupérer le résultat d'une requête mysql dans un tableau en java
    Par RouRa22 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 08/01/2011, 22h36
  3. [MySQL] Resultat d'une requête mysql dans un tableau.
    Par ns_deux dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/01/2009, 14h03
  4. Requête MySQL dans un tableau
    Par JimZ81 dans le forum JDBC
    Réponses: 2
    Dernier message: 30/03/2008, 22h55
  5. Arrêt de l'exécution d'une requête MySQL dans DELPHI.
    Par joelmarc dans le forum Bases de données
    Réponses: 9
    Dernier message: 11/10/2004, 16h11

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