是否有一个在Java中有MySQL错误号的公共类?

时间:2013-10-24 16:09:00

标签: java mysql jdbc

我刚写了这段漂亮的代码。

if(sex.getErrorCode() == 1213) // deadlock

可怕的魔法数字。当然我可以编写所有我自己的幻数,但是不应该存在于某个地方吗?

不确定在哪里看 - JDBC不应该真正具有MySQL特定信息,我的文件中没有任何MySQL类或者知道MySQL jar。

3 个答案:

答案 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异常。