広告

Java : SQLException (JDBC) - API使用例

SQLException (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。


概要

データベース・アクセス・エラーまたはその他のエラーに関する情報を提供する例外です。

クラス構成

SQLException は、データベースに対する操作で問題があったときに発生する チェック例外 です。

補足

  • JDBC のドライバには Apache Derby を使っています。
    Apache Derby は、古い JDK に含まれていたこともありましたが、最新の JDK には含まれていません。
final var url = "jdbc:derby:memory:db";
try (final var connection = DriverManager.getConnection(url)) {
    System.out.println("Connected!");
} catch (SQLException e) {
    System.out.println(e);
}

// 結果
// ↓
//java.sql.SQLException: Database 'memory:db' not found.
final var url = "jdbc:derby:memory:db;create=true";
try (final var connection = DriverManager.getConnection(url)) {
    System.out.println("Connected!");
} catch (SQLException e) {
    System.out.println(e);
}

// 結果
// ↓
//Connected!

コンストラクタ

SQLException ()

SQLExceptionオブジェクトを構築します。

final var e = new SQLException();
System.out.println(e); // java.sql.SQLException

SQLException (String reason)

指定されたreasonを含むSQLExceptionオブジェクトを構築します。

final var e = new SQLException("Reason!");
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!

SQLException (String reason, String SQLState)

指定されたreasonとSQLStateを含むSQLExceptionオブジェクトを構築します。

final var e = new SQLException("Reason!", "State!");
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!
System.out.println(e.getSQLState()); // State!

SQLException (String reason, String SQLState, int vendorCode)

指定されたreason、SQLState、およびvendorCodeを含むSQLExceptionオブジェクトを構築します。

final var e = new SQLException("Reason!", "State!", 123);
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!
System.out.println(e.getSQLState()); // State!
System.out.println(e.getErrorCode()); // 123

SQLException (String reason, String sqlState, int vendorCode, Throwable cause)

指定されたreason、SQLState、vendorCode、およびcauseを含むSQLExceptionオブジェクトを構築します。

final var cause = new SQLException("XYZ");

final var e = new SQLException("Reason!", "State!", 123, cause);
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!
System.out.println(e.getSQLState()); // State!
System.out.println(e.getErrorCode()); // 123

System.out.println(e.getCause()); // java.sql.SQLException: XYZ

SQLException (String reason, String sqlState, Throwable cause)

指定されたreason、SQLState、およびcauseを含むSQLExceptionオブジェクトを構築します。

final var cause = new SQLException("XYZ");

final var e = new SQLException("Reason!", "State!", cause);
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!
System.out.println(e.getSQLState()); // State!

System.out.println(e.getCause()); // java.sql.SQLException: XYZ

SQLException (String reason, Throwable cause)

指定されたreasonとcauseを含むSQLExceptionオブジェクトを構築します。

final var cause = new SQLException("XYZ");

final var e = new SQLException("Reason!", cause);
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!

System.out.println(e.getCause()); // java.sql.SQLException: XYZ

SQLException (Throwable cause)

指定されたcauseを含むSQLExceptionオブジェクトを構築します。

final var cause = new SQLException("XYZ");

final var e = new SQLException(cause);
System.out.println(e); // java.sql.SQLException: java.sql.SQLException: XYZ
System.out.println(e.getCause()); // java.sql.SQLException: XYZ
System.out.println(e.getCause().getMessage()); // XYZ

メソッド

int getErrorCode ()

このSQLExceptionオブジェクトのベンダー固有の例外コードを取得します。

final var e = new SQLException("Reason!", "State!", 123);
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!
System.out.println(e.getSQLState()); // State!
System.out.println(e.getErrorCode()); // 123

SQLException getNextException ()

setNextException(SQLException ex)によってこのSQLExceptionオブジェクトにチェーンされた例外を取得します。

final var e1 = new SQLException("E1");
System.out.println(e1); // java.sql.SQLException: E1

final var e2 = new SQLException("E2");
System.out.println(e2); // java.sql.SQLException: E2

System.out.println(e1.getNextException()); // null

e1.setNextException(e2);

System.out.println(e1.getNextException()); // java.sql.SQLException: E2

String getSQLState ()

このSQLExceptionオブジェクトのSQLStateを取得します。

final var e = new SQLException("Reason!", "State!");
System.out.println(e); // java.sql.SQLException: Reason!
System.out.println(e.getMessage()); // Reason!
System.out.println(e.getSQLState()); // State!

Iterator<Throwable> iterator ()

チェーンされたSQLExceptionについてのイテレータを返します。

final var e1 = new SQLException("E1");
final var e2 = new SQLException("E2");
final var e3 = new SQLException("E3");

e1.setNextException(e2);
e2.setNextException(e3);

final var it = e1.iterator();

System.out.println("-- iterator --");
while (it.hasNext()) {
    final var e = it.next();
    System.out.println(e.getMessage());
}

// 結果
// ↓
//-- iterator --
//E1
//E2
//E3

void setNextException (SQLException ex)

チェーンの最後にSQLExceptionオブジェクトを追加します。

final var e1 = new SQLException("E1");
System.out.println(e1); // java.sql.SQLException: E1

final var e2 = new SQLException("E2");
System.out.println(e2); // java.sql.SQLException: E2

System.out.println(e1.getNextException()); // null

e1.setNextException(e2);

System.out.println(e1.getNextException()); // java.sql.SQLException: E2

Throwableで宣言されたメソッド

addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString

Java API 使用例 : Throwable」をご参照ください。

Iterableで宣言されたメソッド

forEach, spliterator

Java API 使用例 : Iterable」をご参照ください。


関連記事

ページの先頭へ