0

私は、Javaを介してデータベースを操作するプログラムを作成しようとしている新しいMySQLユーザーです。

users次の属性で名前を付けたテーブルを作成します| USERNAME | EMAIL | ROLE |。ここ USERNAMEPRIMARY KEY、および残りの属性はNOT NULLです。

MySQLINSERT INTO usersに主キー制約があるため、USERNAMEエラーがスローされるはずです。このエラーはどのようにスローされ、JAVA内でどのようにキャッチしますか?エラーをスローするためのストアドプロシージャを作成する必要がありますか、またはINSERT INTOステートメントにもこの機能がありますか?

4

1 に答える 1

1

主キーに違反した場合、違反しSQLExceptionた制約の名前を含むメッセージとともにスローされます。例外処理は次のようになります。

try {
    //do the insert
} catch (SQLException e) {
    if(e.getMessage().contains("MY_CONSTRAINT_NAME")) {
        //duplicate key
    } else {
        //some other error
    }
}

SQLException.getSQLState()別の方法は、またはを確認することSQLException.getErrorCode()です。

SQLException変換を処理し、通常、作成する必要のあるJDBCコードの量を減らすSpringJDBC使用することをお勧めします。

于 2013-03-27T00:51:16.563 に答える