1

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

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

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

不知道去哪里找——JDBC 不应该有 MySQL 的特定信息,而且我的文件中没有任何 MySQL 类,也不知道 MySQL jars。

4

3 回答 3

7

MySQL Connector/J 的com.mysql.jdbc.MySQLErrorNumbers类定义了一系列可以比较的常量SQLException.getErrorCode()。例如:

if(e.getErrorCode() == MysqlErrorNumbers.ER_LOCK_DEADLOCK) { }

该列表在手册中有所记录。

于 2014-11-03T23:08:55.813 回答
0

不,Java 中没有保存 MySQL 错误编号的通用类。这是因为每个数据库供应商都有自己的错误代码,具有自己的含义。例如, 。可能在各自的 jar 中有一个常量类。

正如@MarcB 所指出的,您可以使用代表每个错误的常量创建自己的类,这些常量基于此处的特定 MySQL 错误代码:服务器错误代码和消息。IMO 您应该根据要以特定方式处理的错误创建常量,而其他错误应使用通用方式处理。

于 2013-10-24T16:13:01.993 回答
0

您可以考虑使用Spring而不是直接使用 JDBC。Spring JDBC 模板实现了用于检查 SQL 状态代码、处理连接失败等的样板代码。它将一般SQLException异常转换为适当的特定DataAccessException异常。

于 2014-11-07T12:36:17.720 回答