1

この美しいコード行を書きました。

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

恐ろしいマジックナンバー。もちろん、自分のマジック ナンバーをすべてコード化することもできますが、これはすでにどこかに存在するはずではありませんか?

どこを見ればよいかわからない - JDBC は実際には MySQL 固有の情報を持つべきではなく、ファイルに MySQL クラスがないか、MySQL jar を認識していません。

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

JDBC を直接使用する代わりに、Springを使用することを検討できます。Spring JDBC テンプレートは、SQL ステータス コードの検査、接続障害の処理などのためのボイラープレート コードを実装します。一般的なSQLException例外を適切な特定のDataAccessException例外に変換します。

于 2014-11-07T12:36:17.720 に答える
0

いいえ、MySQL エラー番号を保持する Java の共通クラスはありません。これは、各データベース ベンダーが独自の意味を持つ独自のエラー コードを持っているためです。例えば、 。おそらく、それぞれのjar内に定数クラスがあります。

@MarcB が指摘したように、次の特定の MySQL エラー コードに基づいて、各エラーを表す定数を使用して独自のクラスを作成できます: Server Error Codes and Messages。IMOでは、特定の方法で処理したいエラーに基づいて定数を作成する必要があり、他のエラーは一般的な方法で処理する必要があります。

于 2013-10-24T16:13:01.993 に答える