Operation not allowed after ResultSet closed
Hind4Dev
Messages postés
2
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
j'ai deux méthodes d'insertion dans une bdd qui génère l'exception "Oparation not allowed after ResultSet closed" que voici, alors qu'on a besoin de mettre stat.close():
@SuppressWarnings("deprecation")
public void insertEtudiant() throws Exception{
try{
int codeLieu = getLieu();
int codeNat = getNat();
String codeF = getFiliere();
int codeMotif = getMotif();
String query = "INSERT INTO etudiant (bac,nom,prenom,genre,adresse,n_phone,mail,n_ccp,decision,bloque,"
+ "n_ins,annee__encours,annee_univ,annee_courante,reste,"
+ "an_1,an_2,an_3,an_4,an_5,an_6,an_7,an_8,an_9,an_10,"
+ "cycle,nbr_annee,code_f,date_nais,code,code_nat,Observation,date_bloc,code_motif) "
+ "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
stat = cnx.prepareStatement(query);
stat.setString(1, txtBAC.getText());
stat.setString(2, txtNom.getText());
stat.setString(3, txtPrenom.getText());
stat.setString(4, genre);
stat.setString(5, txtAdr.getText());
stat.setString(6, txtPhone.getText());
stat.setString(7, txtMail.getText());
stat.setString(8, (String)txtCCP.getValue());
stat.setString(9, txtDec.getText());
stat.setBoolean(10, bloc);
stat.setString(11, txtIns.getText());
stat.setString(12, txtAn.getText());
stat.setString(13, txtUniv.getText());
stat.setInt(14,new java.sql.Date(System.currentTimeMillis()).getYear());
stat.setInt(15, reste);
//stat.setInt(6, rds);
stat.setInt(16, 0);
stat.setInt(17, 0);
stat.setInt(18, 0);
stat.setInt(19, 0);
stat.setInt(20, 0);
stat.setInt(21, 0);
stat.setInt(22, 0);
stat.setInt(23, 0);
stat.setInt(24, 0);
stat.setInt(25, 0);
stat.setString(26,txtBAC.getText());
stat.setString(27, codeF);
stat.setString(28, cycle);
stat.setString(29, ((JTextField) dateChooser.getDateEditor().getUiComponent()).getText());
stat.setInt(30, codeLieu);
stat.setInt(31, codeNat);
//stat.setInt(14, codePhoto);
stat.setString(32, txtObs.getText());
stat.setDate(33,new java.sql.Date(System.currentTimeMillis()));
stat.setInt(34, codeMotif);
stat.execute();
}catch(SQLException ex){
JOptionPane.showMessageDialog(null,"Problème insertEtudiant");
}
finally{
stat.close();
}
}
public void insertFils() throws SQLException{
try{
int codeP = insertPere();
int codeM = insertMere();
String query = "INSERT INTO fils_de (bac,code_p,code_m) VALUES (?,?,?)";
stat = cnx.prepareStatement(query);
stat.setString(1,txtBAC.getText());
stat.setInt(2, codeP);
stat.setInt(3, codeM);
stat.execute();
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Problème insertFils");
}
finally{
stat.close();
}
}
A voir également:
- Java.sql.sqlexception: operation not allowed after resultset closed
- Msi after - Télécharger - Optimisation
- L'opération demandée nécessite une élévation ✓ - Forum Windows 10
- Html5 video not properly encoded - Forum Réseaux sociaux
- La vidéo à télécharger va 5 fois plus vite que sa vitesse normale. divisez sa vitesse par 5 pour rétablir sa vitesse normale. après cette opération, combien de papillons figurent entre la 17e et la 18e seconde ? ✓ - Forum Montage et acquisition vidéo
- Camera lens blur after effects français ✓ - Forum TV & Vidéo
2 réponses
J'ai l'impression qu'il faut utiliser la méthode .executeUpdate() et non pas .execute().
------------------------------------------------------------------------------------
"La peur mène à la colère. La colère mène à la haine. Et la haine ... mène à la souffrance." - Yoda
------------------------------------------------------------------------------------
"La peur mène à la colère. La colère mène à la haine. Et la haine ... mène à la souffrance." - Yoda
Hind4Dev
Messages postés
2
Statut
Membre
c'est ce que j'avais fait auparavant mais il n'est pas là le problème
Bonjour, S'il vous plait, Merci... Ce sont des mots plus qu'appréciés quand on pose un message sur un forum, nous ne sommes pas des robots !
Quant au problème il faudrait voir où se trouve l'erreur (quelle ligne de code) mais tu utilises probablement deux fois le même statement pour deux requêtes distinctes, peut-être à ce niveau là :
Pour éviter ça tu dois créer un nouveau statement pour chaque requête et le meilleur moyen d'y arriver est de ne pas utiliser un attribut de classe transverse à toute la classe mais d'en spécifier un nouveau dans chaque méthode.
Quant au problème il faudrait voir où se trouve l'erreur (quelle ligne de code) mais tu utilises probablement deux fois le même statement pour deux requêtes distinctes, peut-être à ce niveau là :
int codeP = insertPere(); int codeM = insertMere();
Pour éviter ça tu dois créer un nouveau statement pour chaque requête et le meilleur moyen d'y arriver est de ne pas utiliser un attribut de classe transverse à toute la classe mais d'en spécifier un nouveau dans chaque méthode.