(Resolvido) Problema com firebird

tenho um aplicativo que usando firebird e tenho duas consultas:

consulta1:

nesta consulta eu pego um resultset de uma tabela de produtos

consulta2

nesta consulta eu pego um resultet de uma tabela de clientes

as duas consultas utilizam a mesma conexão

Se eu executar as consultas separadas funcionam normalmente. porem, como as duas consultas eu dou um connection.commit; se as duas estiverem executando ao mesmo tempo numa thread
a primeira que terminar logo após dar o connection.commit a outra consulta termina com uma exception:

Exception in thread “Thread-3” java.lang.NullPointerException
at org.firebirdsql.gds.impl.wire.isc_stmt_handle_impl.addRow(isc_stmt_handle_impl.java:196)
at org.firebirdsql.gds.impl.wire.XdrInputStream.readSQLData(XdrInputStream.java:159)
at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscDsqlFetch(AbstractJavaGDSImpl.java:1377)
at org.firebirdsql.gds.impl.GDSHelper.fetch(GDSHelper.java:265)
at org.firebirdsql.jdbc.FBStatementFetcher.fetch(FBStatementFetcher.java:201)
at org.firebirdsql.jdbc.FBStatementFetcher.next(FBStatementFetcher.java:137)
at org.firebirdsql.jdbc.AbstractResultSet.next(AbstractResultSet.java:261)

depois de muito procurar descobri que o connectioin.commit esta fechando o cursor da outra
pesquisa. Como resolver isso?

Por que está usando threads?

Se uma consulta depende da outra, por que está executando em separado? Não faz mais sentido que sejam sequenciais?

Para que precisa esse commit, se você está apenas consultando dados (select), não alterando (insert, update, delete)?

Abraço.

amigo descobri o problema…
agora eu descobri o problema é o seguinte:
no preparedstatement vc tem que colocar da seguinte maneira:

    PreparedStatement stmt = this.con.prepareStatement(sql,
            ResultSet.TYPE_FORWARD_ONLY,
            ResultSet.CONCUR_READ_ONLY,
            ResultSet.HOLD_CURSORS_OVER_COMMIT);

e eu estava usando o driver jbird 2.2.2.jar
passei a usar o jaybird.2.2.13.jar

problema resolvido…