JAVA : Erreur avec 2 requêtes imbriquées :'-|

JAVA : Erreur avec 2 requêtes imbriquées :'-| - Java - Programmation

Marsh Posté le 26-06-2004 à 22:53:03    

Bonjour !
 
Je voudrai faire une requête dans une table pour récupérer des ID (avec un group by pour les avoir une seule fois)  
 
ensuite avec une boucle rechercher dans une autre table pour chacun d'eux des infos
 
Ca me donne une erreur "java.sql.SQLException: Before start of result set " mais ca fonctionne bien au premier passage dans la boucle  :pt1cable:  
 
les reqêtes foinctionnenet bien séparément
j'utilise le le connector/J : mysql-connector-java-3.0.14-production-bin.jar (le dernier hors beta)
 
je sais pas quoi faire  :(  
 
help please  :sweat:  
 
J'ai mis tout le code tel quel car l'erreur vient peut être d'ailleurs ...
 

Code :
  1. try{
  2.    CreateConnexion createdConn = new CreateConnexion();
  3.    Connection conn = createdConn.getConnexion();
  4.    Statement s = conn.createStatement();
  5.    // permet d'obtenir tous les ID des livres visibles
  6.    String rqLivres = " ";
  7.    rqLivres += " SELECT l.livre_d_or_id, l.livre_d_or_repertoire  ";
  8.    rqLivres += " FROM livres_d_or l ";
  9.    rqLivres += " WHERE l.livre_d_or_visible = 1 ";
  10.    rqLivres += " ORDER BY l.livre_d_or_id ASC ";
  11.    ResultSet rsLivres = s.executeQuery(rqLivres);
  12.    // Pour chaque livre d'or on va chercher la première dédicace
  13.    String rqFirstDed = " ";
  14.    ResultSet rsFirstDed;
  15.    String repertoire = "";
  16.    String idLivre = "";
  17.    while(rsLivres.next()){
  18.     repertoire = rsLivres.getString(2);
  19.     idLivre = rsLivres.getString(1);
  20.     rqFirstDed=" ";
  21.     rqFirstDed +=" SELECT d.dedicace_nom ";
  22.     rqFirstDed +=" FROM dedicaces d";
  23.     rqFirstDed +=" WHERE livre_d_or_id = "+idLivre+" ";
  24.     rqFirstDed +=" ORDER BY dedicace_rang ASC ";
  25.     rsFirstDed = s.executeQuery(rqFirstDed);
  26.     out.println("<img src='"+request.getServerName()+":"+request.getServerPort()+"/dedicam/"+repertoire+"/"+rsFirstDed.getString(1)+".jpg'>" );
  27.    }
  28.    conn.close();
  29.   } catch (Exception e){
  30.    out.println(e);
  31.   }


Message édité par camarchepoa le 26-06-2004 à 22:56:22
Reply

Marsh Posté le 26-06-2004 à 22:53:03   

Reply

Marsh Posté le 26-06-2004 à 23:27:02    

en fait c'est le "rsLivres.next()" qui pose problème  
 
En effet si je retire le while il fait qu'un passage et ca fonctionne bien ....
 
Apparement il ferme le ResultSet mais pourquoi ?
 
on peut pas le rouvrir :??: :D
 
 
 
edit et si je rajoute "rsLivres = s.executeQuery(rqLivres);" à la fin du while il part bien en boucle infinie donc ca confirme la source du problème (pq ? c mal les boucles infinies   :whistle:  )


Message édité par camarchepoa le 26-06-2004 à 23:29:33
Reply

Marsh Posté le 27-06-2004 à 20:16:20    

Tu ne peux pas réutiliser ton statement pour faire une deuxième query si tu as un resultset ouvert.
 
Et utilises des PreparedStatement!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed