Tout a fait exact, comme je travaille toujours sur une m�me base, j'avais omis ce d�tail.
Pour la m�thode isClosed(), ca serait trop simple;) ! Peut �tre faire la remarque � JCP pour qu'il modifie l'API JDBC. Laurent For�t. ----- Original Message ----- From: "Erik Mazoyer" <[EMAIL PROTECTED]> To: "Laurent For�t" <[EMAIL PROTECTED]> Sent: Friday, March 07, 2003 11:54 AM Subject: RE: Resultset et close() > > ...puis regarder l'�galit� du message, en clair. > > Le probl�me est que ce message est d�pendant de la base de donn�e. > Je peux tr�s bien recevoir : > "The Resulset is closed" > ou > "L'ensemble des r�sultats est d�j� ferm�". > > Une analyse g�n�rique me semble impossible. > > Bref, j'ai bien l'impression qu'il n'y a pas de solution. > Ce serait pourtant si simple une m�thode : > public boolean isClosed() throws SQLException > > 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] > > > -----Message d'origine----- > De : Laurent For�t [mailto:[EMAIL PROTECTED] > Envoy� : vendredi 7 mars 2003 11:48 > � : [EMAIL PROTECTED] > Objet : Re: Resultset et close() > > > 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] > > > >
