Bonjour,
Je viens de passer quelques minutes sur un bug que j'ignorais totalement et qui laisse perplexe quelques collègues. Voici le code suivis de l'exception reçue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Class.forName("org.postgresql.Driver"); Connection conn = DriverManager.getConnection( "jdbc:postgresql://xxx.yyy.zzz.www:1234/dbname", "usr", "pwd"); Statement state = conn.createStatement(); ResultSet rs1 = state.executeQuery("SELECT * FROM test1 WHERE 1=1"); ResultSet rs2 = state.executeQuery("SELECT * FROM test2 WHERE 1=1"); rs1.next();La solution est de créer chaque ResultSet sur un nouveau Statement :org.postgresql.util.PSQLException: Ce ResultSet est fermé.
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkClosed(AbstractJdbc2ResultSet.java:2563)
at org.postgresql.jdbc2.AbstractJdbc2ResultSet.next(AbstractJdbc2ResultSet.java:1784)
at Test.main(Test.java:27)
L'un d'entre vous à t'il une explication à ce phénomène ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Class.forName("org.postgresql.Driver"); Connection conn = DriverManager.getConnection( "jdbc:postgresql://xxx.yyy.zzz.www:1234/dbname", "usr", "pwd"); ResultSet rs1 = conn.createStatement().executeQuery("SELECT * FROM test1 WHERE 1=1"); ResultSet rs2 = conn.createStatement().executeQuery("SELECT * FROM test2 WHERE 1=1"); rs1.next();
Merci
Quelques précisions :
- jre : 1.6.0_04
- sgbd : PostgreSQL 8.2
- driver : postgresql-8.2-505.jdbc3
Partager