Résultat de plusieurs ResultSet

Signaler
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009
-
kzaazoui
Messages postés
1
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
16 janvier 2008
-
Salut à tous,
Je débute dans le développement en Java et surtout dans l'utilisation de JDBC.
Alors voilà, j'ai une classe de type singleton nommée Database qui se charge de se connecter à une base de donnée Oracle, et de créer un Statement à partir de la connexion. Elle possède une méthode ResultSet query(String sql) qui se charge d'executer les requêtes, et qui retourne un ResultSet.
Elle fonctionne bien, sauf dans le cas où je fais 2 requêtes d'affilée ... Imaginons par exemple 2 tables différentes Ouvrier et Client qui possèdent toutes les 2 au moins 4 enregistrements (je précise ça car le problème ne vient pas des tables).

        // Série 1
        ResultSet result1 = database.query("SELECT * FROM Ouvrier");
        result1.next();
        System.out.println(result1.getInt(1));
        result1.next();
        System.out.println(result1.getInt(1));
        System.out.println("--------------------");
       
       // Série 2
        ResultSet result2 = database.query("SELECT * FROM Client");
        result2.next();
        System.out.println(result2.getInt(1));
        result2.next();
        System.out.println(result2.getInt(1));
        System.out.println("--------------------");
         
       // Série 3
        result1.next();
        System.out.println(result1.getInt(1));
        result1.next();
        System.out.println(result1.getInt(1));
        System.out.println("--------------------");

Et bah ça marche pas. La série 3 m'affiche le reste de la série 2 au lieu du reste de la série 1 ... Pourquoi ? Comment faire pour que ça ne fasse pas ça ?
Merci pour vos réponses !
LocalStone

6 réponses

Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
1
Salut,

OK

Tu pourrais faire une copie du ResultSet dans une classe a toi
ainsi tu aurais pas de problemes
 mais c'est etrange
 a Ta place oui je ferais une copie de ResultSet comme ca ca serait regle
 car peut-etre que ResultSet ne stocke pas tout pour pas prendre trop de memoire
 mais recupere au fur et a mesure les donnees manquantes

Une autruche ne se cuit pas aux petits lardons.
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Je vais déjà essayer ta solution, mais en fait, j'ai dis une connerie dans mon premier post. Je ne récupère pas la suite, mais en fait j'obtiens l'exception suivante :  Exception in thread "main" java.sql.SQLException: Ensemble de résultats épuisé, ce qui est étrange dans le sens où ma table contient un nombre suffisant d'entrée ...
Mais je vais déjà essayer ta solution.
Merci !
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Bon ... Bah je viens d'essayer, mais on ne peut pas cloner un objet Statement ... Donc ça ne marche pas ... Que faire ?
Messages postés
149
Date d'inscription
mercredi 28 mars 2007
Statut
Membre
Dernière intervention
17 mai 2007
1
re

Il faudrait regler le probleme de la SQLException d'abord
voir si ca marche ou pas

Une autruche ne se cuit pas aux petits lardons.
Messages postés
514
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
1 mars 2009

Un petit Up, si quelqu'un peut m'aider parce que je ne m'en sors pas tout seul ...
Messages postés
1
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
16 janvier 2008

bonjour,
tester de travailler avec deux variables

"database":


"database1" et


database2",



  // Série 1
        ResultSet result1 = database1.query("SELECT * FROM Ouvrier");
        result1.next();
        System.out.println(result1.getInt(1));
        result1.next();
        System.out.println(result1.getInt(1));
        System.out.println("--------------------");
       
       // Série 2
        ResultSet result2 = database2.query("SELECT * FROM Client");
        result2.next();
        System.out.println(result2.getInt(1));
        result2.next();
        System.out.println(result2.getInt(1));
        System.out.println("--------------------");
         
       // Série 3
        result1.next();
        System.out.println(result1.getInt(1));
        result1.next();
        System.out.println(result1.getInt(1));
        System.out.println("--------------------");



(*** La programmation est l'art de faire parler la machine ***)