JAVA : operation not allowed after resultset

Bonjour,

Je ne comprends pas ce message qui s'affiche pourtant le programme s'éxécute bien et execute ma requete update =S

statement.executeUpdate("UPDATE 'gestion_auto'.'auto_neuve' SET 'etat' = 'vendu' WHERE 'auto_neuve'.'id_neuve' = '"+choix+"' ");

Merci pour vos reponses !

Voici mon code :

while(resultat.next())
{

if(choix == resultat.getInt(1))
{

System.out.println("Vous avez choisi :");

num = resultat.getInt(1);
marque = resultat.getString(2);
modele = resultat.getString(3);
couleur = resultat.getString(4);
prix = resultat.getDouble(5);
// etat = resultat.getString(6);

System.out.println(" "+num+" " +marque+ " "+modele+ " "+couleur+" "+prix+" euros " );

System.out.println("");

System.out.println("Voulez vous vraiment l'acheter?");
System.out.println("1 - Oui");
System.out.println("2 - Non");
rep = Saisie.lire_int("");

if (rep == 1)
{
statement.executeUpdate("UPDATE 'gestion_auto'.'auto_neuve' SET 'etat' = 'vendu' WHERE 'auto_neuve'.'id_neuve' = '"+choix+"' ");
System.out.println("");
System.out.println("Felicitation pour votre nouvelle acquisition!");

}

}

}

}
catch(SQLException c)
{
System.out.println("*******L'identification a echouee !!!************");
System.err.println(c.getSQLState());
c.printStackTrace();
return;
}

5 réponses

  1. Salut,

    qu'est ce qu'il y'a juste avant ce morceau de code que tu as mis?
    1. regarde
      if(choix == resultat.getInt(1)) <--------------------------- premier appel de resultat
      {

      System.out.println("Vous avez choisi :");

      num = resultat.getInt(1); <--------------------------- deuxieme appel de resultat

      je suppose bien que ton resultat est un ResulSet et une colonne d'un resultset
      ne peut etre appelée plus d'une fois
      essaye ca
      int c=resultat.getInt(1)
      après ..... à toi l'honneur
      pour plus d'aide tu as mon mail en bas
      1. salut a tous

        J'ai essayé ce que tu m'as dit mouradev mais ca ne fonctionne pas =/ toujours le : opreration not allowed after resultset.

        Voici le debut de mon code xav :

        public void neuve()
        {

        int num, choix, rep, choix2;
        String marque, modele, couleur, etat;
        double prix;

        System.out.println("Voici la liste des voitures neuves disponibles :");
        System.out.println("");

        try
        {
        resultat=statement.executeQuery("SELECT * FROM auto_neuve WHERE etat_neuve = 'disponible' ");
        System.out.println("ID Marque Modele Couleur Prix ");
        ____________________________

        alors pour résoudre ce pb j'ai juste enlevé les messages d'erreur du catch mais ce n'est que du bidouillage...
        y a t il un autre moyen? parce que si jlaiss les message d'erreur du catch j'aurai encore le message qui s'affiche =/ .........
        1. salut a tous

          J'ai essayé ce que tu m'as dit mouradev mais ca ne fonctionne pas =/ toujours le : opreration not allowed after resultset.

          Voici le debut de mon code xav :

          public void neuve()
          {

          int num, choix, rep, choix2;
          String marque, modele, couleur, etat;
          double prix;

          System.out.println("Voici la liste des voitures neuves disponibles :");
          System.out.println("");

          try
          {
          resultat=statement.executeQuery("SELECT * FROM auto_neuve WHERE etat_neuve = 'disponible' ");
          System.out.println("ID Marque Modele Couleur Prix ");
          ____________________________

          alors pour résoudre ce pb j'ai juste enlevé les messages d'erreur du catch mais ce n'est que du bidouillage...
          y a t il un autre moyen? parce que si jlaiss les message d'erreur du catch j'aurai encore le message qui s'affiche =/ .........
          1. Essaye d'utiliser un statement différent pour ta deuxieme requete!
            Et pense bien à les fermer à la fin ^^
        2. l'erreur que je t'es signalé existe bel et bien : fait le nécessaire donc
          et voilà encore une autre dans ton code( ca rejoint ce que dit xav) :
          regarde
          au début de code :
          ....
          resultat=statement.executeQuery("SELECT * ..... <------ appel de la première methode de Statement pas de soucis
          ensuite
          au sein du code itérant sur ton resultset (resultat) tu fait
          if (rep == 1)
          {
          statement.executeUpdate("UPDATE 'gestion_auto'.'aut....... <-------- tu appel une deuxieme methode (peu import si differente ou pas) de statement sans te rendre compte ton resultset est fermé(sans bloquer le programme ... c'est pourquoi ton programme marche.... !!! rien ni plus bizarre maintenant)
          bonne chance dans ta vie de developpeur et pense à revenir à............ la doc java
          voici l'explication dans la javadoc de ton erreur

          public interface Statement
          extends Wrapper
          The object used for executing a static SQL statement and returning the results it produces.

          By default, only one ResultSet object per Statement object can be open at the same 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 execution methods in the Statement interface implicitly close a statment's current ResultSet object if an open one exists