JAVA : operation not allowed after resultset

Fermé
olive - 3 juin 2010 à 16:41
 mouradev sur deveoloppez.com - 7 juin 2010 à 20:04
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;
}
A voir également:

5 réponses

xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
3 juin 2010 à 16:43
Salut,

qu'est ce qu'il y'a juste avant ce morceau de code que tu as mis?
0
mouradev sur developpez.com
3 juin 2010 à 19:58
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
0
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 =/ .........
0
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 =/ .........
0
xav3601 Messages postés 3288 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
Modifié par xav3601 le 4/06/2010 à 09:00
Essaye d'utiliser un statement différent pour ta deuxieme requete!
Et pense bien à les fermer à la fin ^^
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mouradev sur deveoloppez.com
7 juin 2010 à 20:04
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
0