Résultat de plusieurs ResultSet

LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009 - 12 mai 2007 à 19:00
kzaazoui Messages postés 1 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 16 janvier 2008 - 16 janv. 2008 à 17:57
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
A voir également:

6 réponses

emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
12 mai 2007 à 19:15
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.
0
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
12 mai 2007 à 19:22
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 !
0
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
12 mai 2007 à 19:32
Bon ... Bah je viens d'essayer, mais on ne peut pas cloner un objet Statement ... Donc ça ne marche pas ... Que faire ?
0
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
12 mai 2007 à 22:27
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
13 mai 2007 à 14:02
Un petit Up, si quelqu'un peut m'aider parce que je ne m'en sors pas tout seul ...
0
kzaazoui Messages postés 1 Date d'inscription lundi 30 mai 2005 Statut Membre Dernière intervention 16 janvier 2008
16 janv. 2008 à 17:57
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 ***)
0
Rejoignez-nous