IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

ResultSet + récursivité = NullPointer ?


Sujet :

JDBC Java

  1. #1
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut ResultSet + récursivité = NullPointer ?
    Bonjour,


    voilà j'ai une méthode récursive qui utilise un ResultSet. Helas, au retour de l'appel récursif, mon ResultSet est null ... En fait mon ResultSet est fournit par une autre méthode. Est ce la cause du pb ?

    Enfin bref, voici le pseudo code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Class1 {
     
    main (){
     
    int error = méthode(donneResultSet());
     
    }
     
     
    ResultSet donneResultSet(){
            String req = "une requete qui va bien";
            return classe2.select(req);    // est là le pb ?
    }
     
     
    int méthode(Resultset set){
     
        while(set.next())   {
            // pleins de truc
     
           // appel récursif pour les sous-enregistrements dans la table
           return méthode(donneResultSet()); 
     
       }
       set.close();   // présent ou pas c'est pareil
       return 0;
    }
     
    }//Class 1
     
     
    Class2 {
     ...
     
     public ResultSet sel(String texte){
        	ResultSet rs=null;
        	try{
        		if (bddSel==null){ //instande de connexion à la base
        			bddSel=new BDD(Pool.GetConnection(prefixe)); 
        		}
        		rs=bddSel.select(texte);   // -> return (statement.executeQuery(requete));
        	}  catch(Exception e){
    	 // bref
        	}
        	return(rs);
        }
     
     
    } //Class 2

    à la fin du premier tour, appel récursif -> requete ne renvoie rien
    retour à "la méthode parente" pour deuxième tour -> paf NullPointer sur mon resultSet


    une idée ? parce que là je patauge un peu ...


    [EDIT]
    Bon en fait, quand on ré exécute le statement, ça ferme le ResultSet ... donc je suis mal.

    Avez vous une idée de ce que je peux faire ?
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  2. #2
    Membre actif Avatar de gamerome
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 265
    Points : 211
    Points
    211
    Par défaut
    Ton algo est bizarre. Je suis pas sur d'avoir compris.
    Mais en gros voila ce que tu fais :

    Tu fais une requete (requete1) tu récupere le résultat. Tu parcours toutes les lignes du résultat et pour chaqu'une de ces lignes de résultats, tu refais la meme requete (requete1) puis tu parcours tte les lignes... etc etc un truc infini quoi!!! A moins que la requete ne change à chaque fois....

    Peux tu tout simplement nous dire en francais ce que tu souhaite faire (sans parler de resultset et autre)?

  3. #3
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    oui la requete change à chaque appel récursif ...

    bon alors, ce que je veux en français. hum, hum ....

    J'ai des enregistrements dans une table. Ceux ci peuvent avoir des parents. Genre une colonne Id et une colonne ParentId.

    Je charge les enregistrements de niveau max.
    Pour chacun de ces enregistrements

    je fais des traitements
    j'appelle la meme méthode sur les enregistrements enfants.

    Fin pour


    En fait le pb vient du fait si j'execute une nouvelle requete sur le statement utilisé, le premier ResultSet est fermé. (Normal). Donc la "descente" récursive marche (théoriquement, j'ai pas vraiment testé) mais pas la remonté.


    En gros je ne peux pas faire de récursivité comme je le voudrais.
    Je vais etre obligé de traiter le niveau N entièrement, puis le niveau N-1 entièrement ...

    A moins que vous n'ayez une solution, je pense que je viens de me répondre à moi meme
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cours : algorithmes et récursivité
    Par Community Management dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 17/10/2018, 00h38
  2. [JDBC] ResultSet d'une Requête stockée
    Par YéTeeh dans le forum Oracle
    Réponses: 6
    Dernier message: 15/05/2004, 18h35
  3. récursivité
    Par krimson dans le forum PostgreSQL
    Réponses: 12
    Dernier message: 06/05/2004, 15h54
  4. Réponses: 5
    Dernier message: 28/04/2004, 15h09
  5. [debutant][bdd] pb avec resultSet is closed
    Par mexong dans le forum JDBC
    Réponses: 5
    Dernier message: 22/03/2004, 16h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo