我有通用的jdbc代码,适用于各种数据库。 我有一些apis可以处理事务和保存点。Jdbc检查功能 - 保存点发布
的问题是,一些数据库需要你释放保存点手动
conn.releaseSavepoint(savepoint1)
有的只是抛出一个exeption当你做一个手动释放(最显着的Oracle)。
如何在运行时检查数据库是否具有自动保存点发布或者是否需要手动执行 。请问,我有一些不错的apis。我不想抓住这个例外,这很丑陋 并且在这种情况下容易出错。抛出的异常是java.sql.SqlException,不像“FeatureUnsupportedException”。所以,如果有一个真正的错误,我愚蠢地捕捉到它,那么我可能会在整个交易中完全失败。
感谢
你已经说过你不想听到这个,但我认为捕捉异常是你最好的选择 – ControlAltDel
Javadoc说如果不支持,它会抛出SQLFeatureNotSupportedException。现在,如果实现符合API,那是另一回事。 – Luciano
@Luciano你是对的! Oracle决定在SqlException中包装所有的db异常。但如果我抓住它,请检查“原因”字段。如果它的SQLFeatureNotSupportedException工作,否则将它扔回去!谢谢,你迄今为止给了我最好的想法。 –