Imbrication de resultset

Résolu
bobbie305girl Messages postés 6 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 12 janvier 2011 - 11 janv. 2011 à 14:59
oxy87 Messages postés 1 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 30 septembre 2011 - 30 sept. 2011 à 12:48
Bonjour à tous !

C'est bien rare que je sèche autant sur un problème ... C'est pourquoi je sollicite vos conseils avisés :)

Je mets directement le code pour ensuite mieux vous expliquer ce qui me bloque :

l_requete = "SELECT * FROM MA_TABLE table1, AUTRE_TABLE table2"
+ " WHERE table2.CHAMP1 = table1.CHAMP1"
+ " AND table2.CHAMP2 = table1.CHAMP2"
+ " AND table1.CHAMP2 IS NOT NULL";

try 
{
ResultSet resultat = stmt.executeQuery(l_requete);

while (resultat.next()) 
{
String recup = resultat.getString("CHAMP1");
//(etc.)

l_requete2 = "SELECT CHAMP1, CHAMP2"
+ " FROM ENCOREUNEAUTRETABLE"
+ " WHERE CHAMP1 = '" + recup+ "'";
ResultSet temp = stmt.executeQuery(l_requete2);

while (temp.next())
{
String blabla = temp.getString("CHAMP2");
l_requete = "SELECT ... FROM ... ";
ResultSet contenu = stmt.executeQuery(l_requete);

while (contenu.next())
sb.append(contenu.getString("value_block"));
}

// Traiter le contenu de sb
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} 


Le ResultSet resultat obtenu avec ma toute première requête n'est pas vide.
J'exécute bien la totalité de ma boucle une première fois... mais pas plus !

J'ai récupéré et testé le contenu de l_requete en base, j'ai bien plusieurs résultats. Est il possible que le contenu de mon ResultSet initial soit "perdu" au cours de mes traitements dans la boucle ?

Je croise les doigts très forts pour que quelqu'un ait une piste à me soumettre (ou une erreur plus grosse que moi à me montrer ) !

Merci à tous d'avance !
A voir également:

3 réponses

HFanny Messages postés 699 Date d'inscription mercredi 19 février 2003 Statut Membre Dernière intervention 13 mai 2011 20
12 janv. 2011 à 00:16
D'après la javadoc, il est dit :

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.


Donc a priori, il faut créer un object Statement différent pour que le premier ResultSet soit toujours existant.

Fanny
3
bobbie305girl Messages postés 6 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 12 janvier 2011
12 janv. 2011 à 10:06
HFanny ... Mille mercis !!!
Au lieu de parcourir la doc, j'aurais du la lire avec attention.
Si tu étais à côté, je t'embrasserais tiens
0
oxy87 Messages postés 1 Date d'inscription dimanche 21 juin 2009 Statut Membre Dernière intervention 30 septembre 2011
30 sept. 2011 à 12:48
merci boccou fanny! je tm
0
Rejoignez-nous