我有一个与数据库不相关的
Java程序,如果由于重复的键抛出了sqlException,我需要知道插入的时候.
如果我使用单个数据库驱动程序,我将简单地使用ErrorCode,但由于我可以使用非常不同的引擎,ErrorCode不一样.
以前有人做过吗?有任何想法吗?
很多TIA!
编辑:我有一个配置文件,其中存储驱动程序类(即:org.apache.derby.jdbc.ClientDriver)和一些其他需要的信息(即:用户名,密码,url …).连接始终作为“java.sql.Connection”传递,所以我不在乎什么驱动程序被使用.
解决方法
使用基本的JDBC,实际上没有办法以跨数据库的方式做你所说的话.正如你所提到的,可以使用getErrorCode,但需要供应商特定的错误代码.
我看到的唯一三种方法是:
>使用某种框架,将所有从错误代码翻译成有意义的异常(Hibernate可能会这样做,有人提到Spring)
>在插入之前手动检查副本(带有选择). (这不会是100%,因为在技术上可能有人可以在您的查询后插入).
>在插入后收到任何sql异常后,尝试查询该ID.如果可以找到匹配项,您可以确定您收到的错误是由于重复的主键. (尽管有可能存在多个问题,而实际上并没有被抛出).
我的建议是写你的代码尽可能地避免这个问题,然后(如果绝对必要的话),使用#3.