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 :

[debutant][bdd] pb avec resultSet is closed


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 39
    Points : 33
    Points
    33
    Par défaut [debutant][bdd] pb avec resultSet is closed
    bonjour,
    ben tout est dit dans le titre, c'est la catastrophe ce resultSet
    en fait le plus simple et que je vous mette le 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
     
    try{
       AccesBdd mabdd = new AccesBdd();
       Statement statement = mabdd.getStatement();
       ResultSet resultat = statement.executeQuery("SELECT * FROM ecran");
     
       while(resultat.next()){
          Statement affichestatement = mabdd.getStatement();
          ResultSet type = affichestatement.executeQuery("SELECT * FROM    affiche WHERE idecran= "+resultat.getInt("idecran"));
     
    ......
       }
    }
    catch(SQLException sqle){
       System.out.println("SQLException : " + sqle.getMessage());
       System.out.println("SQLState :     " + sqle.getSQLState());
       System.out.println("ErrorCode :    " + sqle.getErrorCode()); 
    }

    et donc la en prime jai droit a
    SQLExeption : ResultSet is closed
    SQL state : null
    Error Code :0


    et jarrive pas a comprendre pk en fait c la ligne resultSet type... qui provoque cet erreur. Mais c le mystère du moins pour moi,

    si quelqu un pourrai meclairer ca serai sympa

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Que fais excatement ta classe AccesBdd?? c'est une classe de l'API??? Sinon, chtit conseil utilise le PreparedStatement dans ta boucle. Cette classe permet de faire des requête dynamique comme tu le fais.

    @+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 39
    Points : 33
    Points
    33
    Par défaut
    merci pour le conseil aussi non mon probleme était tout con jétai tellement devant que je le voyais pas ma methode getStatement renvoyé le statement alors que moi je voulai en créé un nouveau.

  4. #4
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Bien moi, j'ai pas vraiment tous compris.

    j'ai la meme erreur que toi et voila mon 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
     
    ResultSet res1, res2;
     
    try {
    	res1 = stat.executeQuery("select numero, station, ligne1, ligne2, ligne3, ligne4, ligne5 from metroratp where station = '"+depart+"'");
    	res1.next();
     
    	res2 = stat.executeQuery("select numero, station, ligne1, ligne2, ligne3, ligne4, ligne5 from metroratp where station = '"+arrivee+"'");
    	res2.next();
     
    	for(int i = 1; i <= 5; i++) {
    		for(int j = 1; j <= 5; j++) {
    			if(res1.getInt("ligne"+i) != 0 && res2.getInt("ligne"+j) != 0 && res1.getInt("ligne"+i) == res2.getInt("ligne"+j)) {
    				listStation = listeStation(depart, res1.getInt("numero"), arrivee, res2.getInt("numero"), res1.getInt("ligne"+i));
    			}
    			else {
    				return null;
    			}
    		}
    	}
     
    	res1.close();
    	res2.close();
    }
    catch (SQLException SQLE) { 
    	SQLE.printStackTrace(); 
    }
    Et en faite, quand je fais ma deuxieme requete, mon premier resultset se vide !

    vous auriez une idée ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 39
    Points : 33
    Points
    33
    Par défaut
    salut, ton premier resultset est vide car il ne stocke pas seul le resultat de ta requete, en fait le resultat d'une requete est stocké dans le couple Statement et resultset. Pour ton cas tu dois faire un truc du genre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ResultSet res1, res2; 
     
    try { 
       res1 = stat.executeQuery("select numero, station, ligne1, ligne2, ligne3, ligne4, ligne5 from metroratp where station = '"+depart+"'"); 
       res1.next(); 
     
    //rajoute une ligne de ce type avec ton databaseConnection
     Statement stat2 =  databaseConnection.createStatement();
     
     
       res2 = stat2.executeQuery("select numero, station, ligne1, ligne2, ligne3, ligne4
    avec ca ca devrai marcher

  6. #6
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    Effectivement apres plusieurs recherches, je me suis rendu compte qu'un resultset est un itérateur du statement !

    Et merci pour la solution

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

Discussions similaires

  1. bdd java problème avec ResultSet
    Par moon96 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/04/2008, 00h06
  2. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 21h21
  3. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 17h52
  4. Import d'une bdd éloquence avec interbase ou postgresql?
    Par Missvan dans le forum InterBase
    Réponses: 11
    Dernier message: 06/01/2004, 22h44
  5. [C++] récup BDD ODBC avec CRecordset
    Par Gothico dans le forum MFC
    Réponses: 6
    Dernier message: 27/10/2003, 12h16

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