JDBC探索のSQLException解析

3328 ワード

1.SQLExceptionの概要
JDBCを使ってデータソース(本文のデータソースが実際に使っているデータベースを表しています)と対話すると、エラーが発生した場合、SQLExceptionという異常を投げます。SQLExceptionの異常には以下の情報が含まれています。私たちのより良い位置決めエラーを助けます。
エラー表示:
get Message方法を使って入手できます。
SQLSTATEコード
コードは5桁のアルファベットと数字で構成されています。多くのコードはISO/ANSIとOpen Group(X/Open)によって標準化されていますが、まだ一部のコードはデータベースプロバイダによって実現されています。
get SQLState法を使って入手できます。
エラーコード
SQLSテートとは異なり、エラーコードはデータベースプロバイダによって定義された整数値であり、ベースデータソースから返される実際のエラーコードが存在する可能性がある。
getError Code法を使って入手できます。
エラーの原因
異常の原因を表し、getCauseメソッドを継続的に呼び出して異常発生の原因を得ることができます。
異常チェーン
複数のエラーが発生した場合、このチェーンで異常を参照します。
get Next Exception方法を使って取得できます。
2.SQLExceptionの例

public static void printSQLException(SQLException e){
  for(Throwable e :ex){
    if (e instanceof SQLException){
      if(ignoreSQLException(((SQLException)e).getSQLState()) == false){
        e.printStackTrace(System.err);
        System.err.println("SQLState:" + ((SQLException)e).getSQLState());
        System.err.println("Error Code:" + ((SQLException)e).getErrorCode());
        System.err.println("Message:" + e.getMessage());
        Throwable t = ex.getCause();
        while(t != null){
          System.out.println("Cause :" + t);
          t = t.getCause();
        }
      }
    }
  }
}
public static boolean ignoreSQLException(String sqlState){
  if(sqlState == null){
    System.out.println("The SQL state is not defined");
  }
  // X0Y32:Jar file already exists in schema
  if(sqlState.equalsIgnoreCase("X0Y32")){
    return true;
  }
  // 42Y55:Table already exists in schema
  if(sqlState.equalsIgnoreCase("42Y55")){
    return true;
  }
  return true;
}
説明:上のコードは[http:docs.oracle.com]から取ります。
3.SQL Warning
SQLWarningはSQLExceptionの非常に重要なサブクラスで、データベースアクセス時に発生する警告を表すために使用されます。異常として、SQLWarningはアプリケーションの実行を停止することなく、計画通りに何かが起こっていないかをユーザーに注意することです。例えば、警告はキャンセルしようとする権限が成功していないことを通知したり、切断を要求している間にエラーが発生する可能性があります。
SQLWarningはConnection、Sttement(PreparedStatitementとCallable Statitementを含む)またはResultSetによって報告される可能性があり、これらのクラスはすべてget Warnings方法があり、この方法を呼び出すことによって、呼び出し先報告の最初の警告を見ることができる。get Warningが警告を返すと、そのget Next Warning方法を呼び出して次の警告を得ることができます。行のステートメントを実行するごとに、前の行のステートメントの警告が消去されます。これは、レポート処理から警告を検索するなら、次の行のステートメントが実行される前に検索しなければならないということです。
DataTruncationは最も一般的な警告であり、SQLStateコードはすべて0104であり、データの読み込みと書き込みに問題があることを示しています。DataTruncationにはどの列やパラメータデータが遮断されているかを理解するための多くの方法があります。カットオフは読み込み中か書き込み中か、どれぐらいのバイトを伝送すべきか、そして実際に伝送されたバイト数を伝送すべきかを理解してください。
4.他のタイプのSQLException
Batch UpdateException:バッチ処理の更新操作中にエラーが発生した場合、提供された情報以外に、提供された更新カウントが処刑される前にエラーが発生したすべての文が発生します。
SQLClient InfoException:接続上に1つ以上のクライアント情報属性を設定できない場合に発生します。提供された情報に加えて、設定されていないクライアント情報属性のリストも提供される。
so on…
締め括りをつける
以上がJDBC探索のSQLException解析のすべての内容であり、皆様のご協力をお願いします。興味のある方は引き続き当駅を参照してください。http://docs.oracle.com/javase/tutorial/jdbc/basics/sqlexception.htmlJDBC常用インターフェースまとめなど、何か問題があったらいつでもメッセージを残してください。