Erreur : ResultSet déjà fermé, ouvert par java.lang.IllegalStateException: Initialisé et mal libéré
Bonjour j'ai 2 méthode :
la 1ère fait une requête sur une base
la seconde fait 2 requête sur une seconde base en se servant du résultat de la premiere.
Voici les structures :
méthode 1
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
public List<String> methodeA(int i) throws RequeteException {
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
List<String> retour = new ArrayList<String> ();
final String requete ="MA REQUÊTE";
try {
con = connexion.getConnection();
ps = con.prepareStatement(requete);
rs = ps.executeQuery();
while(rs.next()){
retour.add(MES DONNEES);
}
connexion.cloreRequete(rs, ps, con);
} catch (Exception e) {
connexion.cloreRequete(rs, ps, con, "methodeA(int i)", e);
}
return retour;
} |
méthode 2
Code:
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
|
public List<Dossier> methodeB(String t) throws RequeteException {
List<Dossier> retour = new ArrayList<Dossier>();
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
Dossier d = null;
String requete = null;
if(tous.equals("2") || tous.equals("3")){
requete = "MA REQUETE";
}else if(tous.equals("1")){
requete = "MA REQUETE";
}
try{
con = this.connexion.getConnection();
ps = con.prepareStatement(requete).;
rs = ps.executeQuery();
while (rs.next()) {
d = new Dossier();
d.setDossierId(rs.getInt("DOSSIER_ID"));
retour.add(d);
this.connexion.cloreRequete(rs, ps, con);
if(tous.equals("3")){
List <String> listeDossier = methodeA(d.getDossierId());
for (int i = 0; i < listeDossier.size(); i++) {
requete = "MA REQUETE ";
PreparedStatement ps2 = null;
ResultSet rs2 = null;
ps2 = con.prepareStatement(requete);
rs2 = ps2.executeQuery();
if (rs2.next()) {
MON TRAITEMENT
retour.add(d);
}
this.connexion.cloreRequete(rs2, ps2, con);
}
}
}
this.connexion.cloreRequete(rs, ps, con);
} catch (Exception ex) {
this.connexion.cloreRequete(rs, ps, con, "methodeB(String t)", ex);
}
return retour;
} |
Je ne sais pas comment organiser mon code pour éviter l'erreur