初入学习 JDBC 操作数据库,想必大家都写过下面的代码:
数据库为:H2
如果需要处理特定 SQL 异常,比如 SQL 语句错误,这个时候我们应该怎么办?
查看 SQLException 源码,我们可以发现两个重要的方法。
SQLException.getErrorCode:返回数据库特定的错误码,由数据库厂商制定,不同厂商错误码不同。如重复主键错误码在 MySQL 中是 1062,而在 Oracle 中却是 1。
SQLException.getSQLState:返回 XOPEN 或 SQL:2003 制定的错误码规范。数据库厂商会将不同错误消息映射成同一个错误码
所以我们可以根据 SQLException.getErrorCode 处理相应的数据库异常。
由于数据库厂商错误码不相同,这就导致如果我们更换数据库,上面判断逻辑就必须重写。