[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