Imbrication de resultset [Résolu]

Messages postés
6
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
12 janvier 2011
- - Dernière réponse : 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 !
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
699
Date d'inscription
mercredi 19 février 2003
Statut
Membre
Dernière intervention
13 mai 2011
18
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 116 internautes nous ont dit merci ce mois-ci

Commenter la réponse de HFanny
Messages postés
6
Date d'inscription
vendredi 18 août 2006
Statut
Membre
Dernière intervention
12 janvier 2011
0
Merci
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
Commenter la réponse de bobbie305girl
Messages postés
1
Date d'inscription
dimanche 21 juin 2009
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
merci boccou fanny! je tm
Commenter la réponse de oxy87

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.