我刚写了这段漂亮的代码。
if(sex.getErrorCode() == 1213) // deadlock
可怕的魔法数字。当然我可以编写所有我自己的幻数,但是不应该存在于某个地方吗?
不确定在哪里看 - JDBC不应该真正具有MySQL特定信息,我的文件中没有任何MySQL类或者知道MySQL jar。
答案 0 :(得分:6)
MySQL Connector / J的com.mysql.jdbc.MySQLErrorNumbers
类定义了一系列常量,您可以将它们与SQLException.getErrorCode()
进行比较。 E.g:
if(e.getErrorCode() == MysqlErrorNumbers.ER_LOCK_DEADLOCK) { }
此列表有点documented in the manual。
答案 1 :(得分:0)
不,Java中没有包含MySQL错误号的公共类。这是因为每个数据库供应商都有自己的错误代码,具有各自的含义。例如, 。可能在相应的罐子里面有一个恒定的等级。
如@MarcB所述,您可以使用常量创建自己的类,这些常量根据此处的特定MySQL错误代码表示每个错误:Server Error Codes and Messages。 IMO你应该根据你想要以特定方式处理的错误来创建常量,其他错误应该使用通用方法来处理。
答案 2 :(得分:0)
您可以考虑使用Spring而不是直接使用JDBC。 Spring JDBC templates实现了用于检查SQL状态代码,处理连接失败等的样板代码。它将通用SQLException
异常转换为适当的特定DataAccessException
异常。