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();
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)
La solution est de créer chaque ResultSet sur un nouveau Statement :
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();
L'un d'entre vous à t'il une explication à ce phénomène ?
Merci


Quelques précisions :
- jre : 1.6.0_04
- sgbd : PostgreSQL 8.2
- driver : postgresql-8.2-505.jdbc3