Olá,
estou com um problema ao executar um sql em um banco Oracle.
Abaixo segue o trecho de código que tenta apagar um registro do banco. O erro ocorre dentro do finally, quando eu tento fazer o commit. A mensagem de erro é: “Calling commit() on a Connection is not allowed during a global transaction.”
....
Connection conn = null;
conn = dataSource.getConnection();
conn.setAutoCommit(false);
PreparedStatement prepStmt = null;
Long codeRecurso = null;
try
{
codeRecurso = pk;
prepStmt = conn.prepareStatement(DELETE_SQL);
int i=1;
setLongValue(prepStmt,i++,codeRecurso);
prepStmt.execute();
}
catch(SQLException erro)
{
System.out.println("Erro ao apagar. Messagem: " + erro.getMessage());
throw erro;
}
finally
{
// Fechar conexões
try
{
prepStmt.close();
conn.commit();
conn.close();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
....
O lance estranho é que se eu tirar as linhas:
conn.setAutoCommit(false);
conn.commit();
o delete não funciona. E com esse código o delete funciona, só que dispara essa exceção.
O banco é o Oracle 10g.
Alguma idéia galera?