2011-03-06 5 views
2

が長期間この質問のためのソリューションを検索するが、このための答えを得るために、まだ管理されていない、私はJAVAで作られた私のアプリケーションの検索ボックスを作成しようとしている(例えば、データが存在しません)。データのSQLExceptionをキャッチする方法?

私はこれを行うことができる方法を知って、データベースおよび列が存在しないユーザーに伝えるか、複製データから例外をキャッチしたいですか?

+0

のマッチング私は、.NET開発者ですが、現在の割り当てを完了するためにJavaを必要と、私は 'しようと{}のように利用できる= D – 1myb

+0

のSmt場合のC#の例外のために行う方法を他の知りたいので、キャッチ{/ *あなたは今までに何もしなかった* /} '? –

+0

うん...しかし、私はSQLからメッセージをキャッチし、ユーザーに戻る?内容が重複しているように、キャッチ例外はユーザーのみにこのメッセージを語っていないだろう=。= – 1myb

答えて

5

これは本当に行うには簡単なことではありませんし、溶液がSQL接続(つまりは、MySQL、Oracleの、など)のベンダーに多くを依存します

私はこの使用してパターンを行うための一つの方法を示していますSQLExceptionのエラーメッセージ

private final int INEXISTENT_COLUMN_ERROR = ? 
    private final int DUPLICATE_DATA_ERROR = ? 

    private final String INEXISTENT_COLUMN_PATTERN = ?; 
    private final String DUPLICATE_DATA_PATTERN = ?; 

    ... 

    try { 
      ... 
     } catch (SQLException e){ 
      if (e.getErrorCode() == INEXISTENT_COLUMN_ERROR) 
       System.out.println("User friendly error message caused by column " + this.matchPattern(e.getMessage(), this.INEXISTENT_COLUMN_PATTERN)); 
      if (e.getErrorCode() == DUPLICATE_DATA_ERROR) 
       System.out.println("User friendly error message caused by duplicate data " + this.matchPattern(e.getMessage(), this.DUPLICATE_DATA_PATTERN)); 
     } 

... 

private String matchPattern(final String string, final String pattern) { 
    final Pattern p = Pattern.compile(pattern); 
    final Matcher m = p.matcher(string); 
    ... 
} 
+0

あなたの例のためのThxを、それは私が何をしたいのですが、私は知っているかもしれない重複データERRORのリスト...または他のSQLエラー・コードはありますか?私のプライマリデータベースはMSSqlです。 = Dあなたは、ベンダーからのエラーコードのリストについては、Googleで見ている必要があり@spencer – 1myb

+0

、ありがとうございました。あなたもあなたの自己のためにそれらを見つけ出すことができSystem.out.print日食を使用しているため – klonq

+0

Thxを= Dは、C#(Visual Studioの)でデバッグが、仕事では、Javaで行うには弱い失敗(()e.getErrorCode)^^ – 1myb