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 :

Comment récupérer les données de deux tables différentes en jsp


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant Master 2 en Ingénierie de Données et Technologie Web
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Etudiant Master 2 en Ingénierie de Données et Technologie Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 35
    Points
    35
    Par défaut Comment récupérer les données de deux tables différentes en jsp
    Bonjour,
    j'ai 2 pages:
    Une page index.jsp ou il y à un formulaire de login
    et une page response3.jsp ou je veux faire la redirection vers autre page selon l'identifiant !
    mon problème est le suivant :
    je vais vérifier l'id en le comparent avec 2 tables dans ma base de donnée si l'identifiant est trouvé dans la 1ere table la page va être rediriger vers index.jsp par exemple, sinon si il est trouvé dans la 2eme table la page va être rediriger vers index2.jsp

    et voilà mon code response3.jsp:
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <%@ page import ="java.sql.*" %>
    <%@ page import ="javax.sql.*" %>
    <%
    String id=request.getParameter("username_2");
    session.putValue("username_2",id);
    String pass=request.getParameter("password_2");
    Class.forName("com.mysql.jdbc.Driver");
    java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mcd","root","blabla");
    Statement st= con.createStatement();
    ResultSet rs=st.executeQuery("select * from admin where id='"+id+"'");
    ResultSet rsx=st.executeQuery("select * from etud where id_etud='"+id+"'");
     
    if(rs.next())
    {
    if(rs.getString(2).equals(pass))
    {
    request.getRequestDispatcher("index.jsp").forward(request, response);
     
    }
    else
    {
    out.println("Invalid password try again");
    }
    }
     
    else if(rsx.next())
    {
    if(rsx.getString(2).equals(pass))
    {
    request.getRequestDispatcher("index.jsp").forward(request, response);
     
    }
    else
    {
    out.println("Invalid password try again");
    }
    }
     
    %>
    et voila l'erreur de Glassfish:
    type Exception report

    message

    descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

    exception

    javax.servlet.ServletException: java.sql.SQLException: Operation not allowed after ResultSet closed

    root cause

    java.sql.SQLException: Operation not allowed after ResultSet closed

    note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.0.1 logs.

    Alors SVP que doit je faire
    Et merci

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Tu ne peux avoit qu'un seul objet ResultSet actif pour un objet Statement.

    Cf l'API de la classe Statement:

    By default, only one ResultSet object per Statement object can be open at the same time. Therefore, if the reading of one ResultSet object is interleaved with the reading of another, each must have been generated by different Statement objects. All execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists.
    Quant tu exécutes ta requête ligne 12, celà a pour effet d'appeller automatiquement la méthode close sur l'objet rs (puisque tu ne peux avoir qu'un seul objet ResultSet actif associé à un même Statement), d'où l'erreur Operation not allowed after ResultSet closed

    Quelque chose comme ceci devrait fonctionner:

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    ResultSet rs=st.executeQuery("select * from admin where id='"+id+"'");
     
    if(rs.next())
    {
      if(rs.getString(2).equals(pass))
      {
        rs.close();
        request.getRequestDispatcher("index.jsp").forward(request, response);
      }
      else
      {
        out.println("Invalid password try again");
      }
    }
    rs.close();
     
    ResultSet rsx=st.executeQuery("select * from etud where id_etud='"+id+"'");
    if(rsx.next())
    {
      if(rsx.getString(2).equals(pass))
      {
        rsx.close();
        request.getRequestDispatcher("index.jsp").forward(request, response);
      }
      else
      {
        out.println("Invalid password try again");
      }
    }
    rsx.close();

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant Master 2 en Ingénierie de Données et Technologie Web
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Etudiant Master 2 en Ingénierie de Données et Technologie Web

    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup premièrement pour ta réponse et deuxièmement pour l'information sur l'objet ResultSet ça m'a aidé énormément
    Merci encore une fois

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

Discussions similaires

  1. exporter les données entre deux tables différentes ?
    Par tizilfin dans le forum Oracle
    Réponses: 3
    Dernier message: 12/03/2007, 15h39
  2. [VB6] MySQL Comment récupérer les données ?
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/02/2006, 14h58
  3. supprimer les données de de table différentes
    Par argon dans le forum Requêtes
    Réponses: 5
    Dernier message: 15/01/2006, 21h58
  4. comment modifier les données d'une table à travers un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 12
    Dernier message: 19/07/2005, 09h51
  5. [ADO.Net][VB.NET] Comment copier des données entre deux BDD différentes ?
    Par maddog2032 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 06/06/2005, 11h01

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