2012-03-12 13 views
3

私はJDBCを使用しており、クエリを実行しています。返されたSQLExceptionオブジェクトから失敗した理由を取得する方法はありますか?SQLExceptionオブジェクトからSQLExceptionの理由を取得する方法

特に、私のクエリが外部キー制約(およびどちらか)またはキー制約に違反しているかどうかを知りたいと思います。

この結果はベンダー固有のものでしょうか?その場合、私はpostgresql-8.4-701.jdbc4.jarドライバを使用しています。それがベンダー固有のものであれば、どこでコードを見つけることができますか?

編集:私は、動的にこれをしたい - そんなすなわち

if(violated foreign key constraint on attribute x) { 
    return 5; 
} else if (violated primary key constraint) { 
    return 7; 
} else { 
    return 0; 
} 

か何か。

編集:this postによると、PostgreSQL JDBCのベンダー固有のエラーコードはありません。それがまだ有効であればダンノー。

答えて

4

にあなたが失敗した理由のいくつかの説明を与えることを取得SQLExceptionオブジェクトからエラーコードを処理できます。

sqlException.getErrorCode() 

これは、このSQLExceptionオブジェクトのベンダー固有の例外コードを取り出します。ベンダー固有のエラーコードを使用すると、必要なコードブロックに分岐することができます。

+0

私はPSQLのコードを探してみましたが、見つけられませんでした。リンクがありますか? – BlackSheep

+1

[ここ](http://docs.oracle.com/cd/B10501_01/appdev.920/a96624/07_errs.htm#784)は、PLSQLエラー・コードのリンクです – Rakesh

0

は、スタックトレースを印刷してみてください(eはのSQLException型である)

e.printStackTrace() 

またはメッセージ

e.getMessage() 

これらはあなたのクエリが

+0

これは参考になりましたが、これを行うためのより動的な(自律的な)方法を探していました。 – BlackSheep

関連する問題