J'obtiens 'Fuite de ressources:' rsHP 'n'est pas fermé à cet endroit' partout où j'utilise un rsHP = stmt.executeQuery (query);Résultat Définir une fuite de ressources même si je ferme le RS?
Voici un schéma de base de ce que cette méthode fait ...
public static void method(String x, Connection conn){
Statement stmtHP = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rsHP = null;
try{
----ALGORITHM IN HERE------
****This is the general form of this method*****
queryHP = "select * from SOMETABLE where SOMETHING = 'blah'";
rsHP = stmtHP.executeQuery(queryHP);
while(rsHP.next()){
List.add(rsHP.getString("COLNAME"));
}
.
.
repeats for 8 different queries
.
.
queryHP = "select * from SOMEOTHERTABLE where SOMETHINGELSE = 'blah2'";
rsHP = stmtHP.executeQuery(queryHP);
while(rsHP.next()){
List.add(rsHP.getString("NEWCOLNAME"));
}
}catch(Exception e){
System.out.println("Hey dumbo you suck, Exception Found");
rsHP.close();
stmtHP.close();
conn.close();
}finally{
rsHP.close();
stmtHP.close();
// connection gets closed later if no exceptions thrown
}
}// end method
A la fin ici je ferme bien toutes mes affaires. Je suis confus quant à la façon dont j'ai une fuite de mémoire s'il est littéralement impossible que ma méthode se termine sans fermer le RS en dehors d'une erreur lancée.
J'ai eu la throws Exception sql , j'essayais juste d'être bref, j'ai un peu d'erreur interne si j'attrape que je pense est en conflit avec la prise d'essai, donc je vais probablement nettoyer cela et voir si cela résout le problème. Je pense que vous avez raison d'ajouter la fin à la fin de l'essai, en les retirant enfin, et en ajoutant les if à la fin. Merci pour la contribution! – Cody
@Cody De rien! N'hésitez pas à marquer cette réponse comme acceptée :) –