[firebase-br] Bug do JDBC? Multiplos ResultSet
William Rocha
william em info.ufrn.br
Sex Ago 29 11:53:20 -03 2008
Ola Pessoal,
Ao tentar abrir um segundo ResultSet, mesmo que usando um segundo Statement o primeiro ResultSet é fechado.
Resolvi isso setando o autocommit p/ false, porem testando em outros bancos (Postgres e SQL Server) nao eh
necessario fazer isso. Alguem sabe se tem outra forma de contornar isso sem ter q ficar mexendo no autocommit?
Estou usando Jaybird 2.1.6 JDK 1.6.
Segue um exemplo que demonstra o problema:
package biblioteca;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.sql.Statement;
public class Teste {
/**
* @param args
* @throws SQLException
*/
public static void main(String[] args) throws SQLException {
Connection con = null;
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:c:/biblioteca.fdb", "sysdba", "masterkey");
} catch (ClassNotFoundException e) {
System.out.println("Não achou o Driver");
} catch (SQLException e) {
System.err.println("Falha na conexão");
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
// con.setAutoCommit(false);
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery("SELECT * FROM LIVRO");
Statement stm2 = con.createStatement();
ResultSet rs2 = stm2.executeQuery("SELECT * FROM LIVRO"); /* Neste ponto fecha o ResultSet rs */
try {
if(rs.next()) /* Vai gerar exception */
System.out.println("rs OK");
if(rs2.next())
System.out.println("rs2 OK");
} catch (Exception e) {
e.printStackTrace();
} finally {
// con.setAutoCommit(true);
}
}
}
Mais detalhes sobre a lista de discussão lista