エラーの処理

Microsoft SQL Server 2005 JDBC Driver を使用するときは、データベースのエラー条件はすべて SQLServerException クラスを使用して、例外として Java アプリケーションに返されます。 SQLServerException クラスの次のメソッドは、java.sql.SQLException および java.lang.Throwable から継承されます。これらのメソッドを使用して、発生した SQL Server エラーに関する特定の情報を返すことができます。

  • getSQLState は、例外の標準的な X/Open または SQL99 状態コードを返します。

  • getErrorCode は、具体的なデータベース エラー番号を返します。

  • getMessage は、例外の全文を返します。 エラー メッセージ テキストは問題について説明します。そして、オブジェクト名のような情報のプレースホルダを含むことがよくあります。こうしたプレースホルダは、エラー メッセージが表示されるとき、その中に挿入されます。

  • getNextException は、返す例外オブジェクトが他にない場合、次の SQLServerException オブジェクトまたは null を返します。

次の例では、SQL Server AdventureWorks サンプル データベースに対して開いている接続が関数に渡され、FROM 句のない不適切な SQL ステートメントが作成されます。 次に、ステートメントが実行され、SQL 例外が処理されます。

public static void executeSQLException(Connection con) {
   try {
      String SQL = "SELECT TOP 10 * Person.Contact";
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(SQL);

      while (rs.next()) {
         System.out.println(rs.getString(4) + " " + rs.getString(6));
      }
      stmt.close();
   }
   catch (SQLException se) {
      do {
         System.out.println("SQL STATE: " + se.getSQLState());
         System.out.println("ERROR CODE: " + se.getErrorCode());
         System.out.println("MESSAGE: " + se.getMessage());
         System.out.println();
         se = se.getNextException();
      } while (se != null);
   }
}

参照

その他のリソース

JDBC ドライバで発生した問題の診断