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 :

Operation not allowed after ResultSet closed


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut Operation not allowed after ResultSet closed
    Bonjour,
    avant de poster, j'ai fais une recherche dans le forum et sur google. le message d'erreur est le même mais la problèmatique n'est pas la même

    au début j'ai mis tout le code dans la même classe, ça marche.
    Pour des raison de perspective j'ai séparé la partie connection à la base et la requête, de la partie affichage.voici donc mes deux classes:

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    /*
     * DbConnection.java
     *
     * Created on 10 mars 2008, 02:06
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package ehr4research2;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    /**
     *
     * @author naji2
     */
    public class DbConnection {
     
        /** Creates a new instance of testJDBC */
         public ResultSet DbConnection()
        {
            ResultSet resultset = null;
            try {
                // Chargement du pilote JDBC
                Class.forName("com.mysql.jdbc.Driver");
                // URL de connexion
                String url = "jdbc:mysql://localhost:3306/terminologydb";
                // Connexion
                Connection con = DriverManager.getConnection(url,"naji","naji007");
                // Création d'une instruction
                Statement statement = con.createStatement();
                // Exécution d'une requete
                String query = "SELECT * FROM WSTY";
                resultset = statement.executeQuery(query);
                // Traitement des résultats
                /* while(resultset.next()) {
                //System.out.println("TUI:" + resultset.getString(1) + " STY:" + resultset.getString(2) + " GROUPE:" + resultset.getString(3));
                
                }*/
                // fermeture de la connexion
                con.close();
     
                }
                catch( ClassNotFoundException e) {
                System.err.println("Erreur lors du chargement du pilote : " + e);
                }
                catch(SQLException sqle) {
                System.err.print("Erreur SQL : " + sqle);
                }
                return resultset;
         }
     
    }
    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
    /*
     * Mappin2ODM.java
     *
     * Created on 10 mars 2008, 15:12
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package ehr4research2;
     
    import java.sql.SQLException;
     
    /**
     *
     * @author naji2
     */
    public class Mappin2ODM {
     
        /** Creates a new instance of Mappin2ODM */
        public Mappin2ODM()
        {
        }
         public static void main(String[] args)
         {
              DbConnection dxCare = new DbConnection(); 
              //OdmSchéma outPutFile = new OdmSchéma();
              try {
                  while(dxCare.DbConnection().next())
                  {
                    System.out.println("TUI:" + dxCare.DbConnection().getString(1) + " STY:" + dxCare.DbConnection().getString(2) + " GROUPE:" + dxCare.DbConnection().getString(3));  
                  }
                  dxCare.DbConnection().cancelRowUpdates();
              }
              catch(SQLException sqle) {
                    System.err.print("Erreur SQL : " + sqle);
              }
     
          }
     
    }
    et voici le message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur SQL : java.sql.SQLException: Operation not allowed after ResultSet closed
    je vous remercie d'avance pour votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Par défaut
    En effet, tu retournes le resultset depuis le constructeur DbConnection, mais tu fermes la connexion liée ("con.close();").

    C'est pourquoi dès que tu fais un .next() sur ce resultset dans ta classe Mappin2ODM, une exception est levée.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Merci, le problème c'est que quand je ne ferme pas la connexion dans DbConnection j'obtiens une autre exception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur SQL : java.sql.SQLException: Before start of result set

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 568
    Par défaut
    Voilà donc ce que j'ai fais pour que ça marche:
    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
    /*
     * Mappin2ODM.java
     *
     * Created on 10 mars 2008, 15:12
     *
     * To change this template, choose Tools | Template Manager
     * and open the template in the editor.
     */
     
    package ehr4research2;
     
    import java.sql.ResultSet;
    import java.sql.SQLException;
     
    /**
     *
     * @author naji2
     */
    public class Mappin2ODM {
     
        /** Creates a new instance of Mappin2ODM */
        public Mappin2ODM()
        {
        }
         public static void main(String[] args)
         {
              DbConnection dxCare = new DbConnection(); 
              //OdmSchéma outPutFile = new OdmSchéma();
              ResultSet resultset = null;
              resultset = dxCare.DbConnection();
             try {
                  while(resultset.next())
                  {
                    System.out.println("TUI:" + resultset.getString(1) + " STY:" + resultset.getString(2) + " GROUPE:" + resultset.getString(3));  
                  }
              }
              catch(SQLException sqle) {
                    System.err.print("Erreur SQL : " + sqle);
              }
     
          }
     
    }
    bien sûr j'ai enlever l'instruction: "con.close();" de DbConnection.java. j'espère que cela ne me posera pas problème quand j'aurai plusieurs requêtes et plusieurs resultats.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/03/2013, 10h55
  2. Erreur "Operation not allowed after ResultSet closed"
    Par boubounagh dans le forum JDBC
    Réponses: 18
    Dernier message: 28/01/2012, 15h42
  3. Operation not allowed after ResultSet closed
    Par menakikou dans le forum Débuter
    Réponses: 1
    Dernier message: 22/09/2009, 16h38
  4. SQLexception: Operation not allowed after ResultSet closed
    Par fripette dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/06/2008, 09h58
  5. Réponses: 7
    Dernier message: 11/08/2006, 09h24

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