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 :

[Jdbc] ResultSet (Exception)


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Inscrit en
    Août 2003
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 128
    Points : 52
    Points
    52
    Par défaut [Jdbc] ResultSet (Exception)
    Bonjour,
    je connecte à une base de données MySql qui possede trois tables, donc pour récupérer les résultats de cette BD, j utilise la classe ResultSet; mais le programme me lève une exception du type java.sql.SQLException: operation not allowed after ResultSet closed . ce que j ai compri c que l'une des ResultSet d une table a était fermer.
    SVP est ce que vous pouvez m aider.
    pour cela je vous donne la partie du programme qui me pose des problemes:

    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
    while(rs_terme.next()){	
            			int elm=rs_terme.getInt("elm");
            			double freq=rs_terme.getInt("freq");
            			String req_elm="select * from element where cle="+elm;
     
           				ResultSet rs_elm=statement.executeQuery(req_elm);
     
            			while(rs_elm.next()){
     
            			double nb_uni=rs_elm.getInt("nb_uni");
            			double nb_tot=rs_elm.getInt("nb_tot");
            			String chemin=rs_elm.getString("chemin");
            			String req_doc="select * from document where chemin="+"\""+chemin+"\"";
            			ResultSet rs_doc=statement.executeQuery(req_doc);
     
            			while(rs_doc.next()){
            			double nb_elements=rs_doc.getInt("nb_elements");
            			double nb_termes=rs_doc.getInt("nb_termes");
            			//double nb_doc_terme=statement.executeQuery("select count * from element group by chemin").getRow();
     
        			score1+=freq*(nb_uni/nb_tot)+(nb_elements/nb_termes)*(nb_doc);       		
     
            			}//fin table document
     
            		}//fin table element
            //je pense qu ici qu il ferme la connexion
            	}//fin parcour table terme
    Merci

    [ Modéré par Bulbo ]
    Ajout d'un tag dans le titre
    Ajout des balises code
    Les Règles du Forum

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 76
    Points : 83
    Points
    83
    Par défaut
    mais toi tu ne les fermes pas tes resultset?
    moi je placerais un rs_doc.close() apres la fin table document
    un rs_elm.close() apres fin table element
    et un rs_terme.close(); tout à la fin.

  3. #3
    Membre actif
    Avatar de jak0
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    272
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 272
    Points : 219
    Points
    219
    Par défaut
    Le probleme quand tu utilise plusieurs choses comme ca, c'est que si tu créé plusieurs ResultSet tu dois également créer plusieurs Statement (un pour chaque ResultSet).
    Et tu dois les fermer à chaque fois que tu en a terminé avec...

    Note : Je dis ca de mémoire, alors je peut me tromper.

    Mais en fait je vois pas trop où est le problème avec ton code, pke ma premiere remarque se verifie avec des traitements de ResultSet imbriqué, ce qui n'est apparement pas le cas ici.
    Es-tu sûr que ton erreur est ici ?
    Goah Sha Kree

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Points : 266
    Points
    266
    Par défaut
    Une piste pour appuyer le post précédent :

    Dans la doc sur les Statements, tu as :

    "Only one ResultSet object per Statement object can be open at any point in 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 statement execute methods implicitly close a statment's current ResultSet object if an open one exists."

    Donc, un Resultset par Statement à la fois, et effectivement la nécessité de les fermer dès que tu n'en as plus besoin. (Question de propreté)

    Sinon, si tu as besoin de garder tes resultsets ouverts parce que tu dois récupérer des informations simultanément sur tes bases à un moment, tu peux faire ca en créant plusieurs Statement, et en attachant un Resultset différent à chaque. Et tu ne devrais plus avoir de problème.

    Bon courage...

  5. #5
    Membre régulier Avatar de delas
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2004
    Messages : 100
    Points : 95
    Points
    95
    Par défaut
    c'est toujours chiant de travailler avec plusieurs resultset.

    Si tu recupere toutes tes données de tes resultSet et que tu les mets dans des Vector temporaire pour ne travailler que sur un rs a la fois c pas mieux?

Discussions similaires

  1. [JDBC][Débutant] Exception : No suitable driver
    Par Prophetis dans le forum JDBC
    Réponses: 7
    Dernier message: 24/10/2005, 23h50
  2. [JDBC] ResultSet previous
    Par soad dans le forum JDBC
    Réponses: 3
    Dernier message: 23/11/2004, 16h05
  3. [JDBC] ResultSet et JavaBean
    Par peuh dans le forum JDBC
    Réponses: 4
    Dernier message: 07/10/2004, 12h02
  4. [JDBC] ResultSet d'une Requête stockée
    Par YéTeeh dans le forum Oracle
    Réponses: 6
    Dernier message: 15/05/2004, 18h35
  5. [JDBC] SQL Exception lors d'une Query !
    Par Castagnems dans le forum JDBC
    Réponses: 5
    Dernier message: 30/04/2004, 12h00

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