Un truc affreux mais qui doit marcher est de rep�rer le message qui est
renvoy� par l'exception dans le cas o� le rs est d�ja fermer.
puis regarder l'�galiter du message, en clair :

 if(rs != null) {
 try {
     rs.close();
 } catch(SQLException sqlex) {
        if ( ! sqlEx.getMessage().equals("SQL already CLOSED)) {
            throw sqlEx;
        }
  }

laurent Foret.

----- Original Message -----
From: "Erik Mazoyer" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, March 07, 2003 11:33 AM
Subject: Resultset et close()


> J'ai une m�thode qui ouvre un java.sql.ResultSet sur une base de donn�e.
> Dans le finally de la m�thode, je referme le ResultSet (m�thode close()).
>
> ResultSet rs = null;
> try {
> ...
> rs = stmt.executeQuery(...);
> ...
> } finally {
> if(rs != null) {
> rs.close();
> }
> }
>
> Le probl�me est qu'au cours de la m�thode ce ResultSet peut �tre ferm� ou
non (la m�thode n'est pas en mesure de le savoir).
>
> Je n'ai pas trouv� de solution pour d�termin� si un ResultSet est ferm� ou
non.
>
> Si je le ferme � nouveau le ResultSet dans le finally, une exception est
lev�e.
> Mais h�las elle est de type SQLException, ce qui n'est pas sp�cifique.
>
> Bref pour l'instant la seule solution trouv�e est de ne pas tenir compte
de l'exception lev�e par le close.
>
> } finally {
> if(rs != null) {
> try {
> rs.close();
> } catch(SQLException sqlex) {}
> }
> }
> Mais cela masque aussi toutes les autres raisons pour lesquelles le close
n'a pu avoir lieu, ce qui nuit au d�boguage.
>
> public void close()
>            throws SQLException
> ...
> Throws:
> SQLException - if a database access error occurs
>
> Bref, avez vous une solution � me proposer ?
>
> Merci,
>
> --------------------------------------------------------------------
> Erik Mazoyer, Chef de projet
> HyperOffice
> 6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
> T�l. 01 41 96 96 76
> Fax 01 41 96 96 77
> M�l  [EMAIL PROTECTED]
>

Répondre à