Jdbc检查功能 - 保存点发布

时间:2012-05-19 17:12:25

标签: java database oracle jdbc savepoints

我有通用的jdbc代码,适用于各种数据库。 我有一些apis可以处理事务和保存点。

问题是某些数据库要求您手动释放保存点

 conn.releaseSavepoint(savepoint1) 

有些人只是在你手动发布时抛出一个例子(最值得注意的是Oracle)。

如果db具有自动保存点释放或我是否需要执行此操作,如何在运行时检查 手动。请,我有一些很好的apis。我不想抓住异常,这很难看 在这种情况下容易出错。抛出的异常是 java.sql.SqlException ,而不是像“FeatureUnsupportedException”。因此,如果存在真正的错误并且我愚蠢地抓住它,那么我可能完全失败了整个交易事情。

由于

2 个答案:

答案 0 :(得分:3)

In Oracle's 10g documentation,我可以发现这个特殊的JDBC / ojdbc方法不受支持的事实:

  

注意:   从Oracle Database 10g开始,不支持releaseSavepoint和oracleReleaseSavepoint。如果您调用其中一个方法,则抛出SQLException并显示消息“Unsupported feature”。

在11g中,the documentation seems to claim否则:

  

使用Connection.releaseSavepoint(Savepoint svpt)方法删除保存点。

但我也很容易在11g中重现你的问题。

答案 1 :(得分:0)

如果您可以将数据库供应商参数传递给您的类,则只需为每个供应商映射此行为即可。