org.postgresql.util.PSQLException: Ce ResultSet est fermé.
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:
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(); |
Citation:
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:
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