モジュール java.sql

パッケージ java.sql

Javaプログラミング言語を使用して、データ・ソース(通常はリレーショナル・データベース)に格納されているデータにアクセスして処理するためのAPIを提供します。 このAPIに含まれているフレームワークで、複数のドライバをインストールして複数のデータ・ソースに動的にアクセスできます。 JDBC APIは主にSQL文をデータベースに渡すことを目的としていますが、表形式のデータ・ソースからのデータの読取りおよび書込みを可能にします。 javax.sql.RowSetインタフェース・グループを介して使用可能な読み込み/書込み機能は、スプレッドシート、フラット・ファイル、またはほかの表形式のデータ・ソースのデータを使用および更新するためにカスタマイズできます。

JDBC 4.3 APIの内容

JDBC 4.3 APIには、JDBCコアAPIと呼ばれるjava.sqlパッケージとJDBCオプション・パッケージAPIと呼ばれるjavax.sqlパッケージの両方が含まれています。 この完全なJDBC APIは、Java Standard Edition (Java SE)バージョン7に含まれています。 javax.sqlパッケージは、JDBC APIの機能をクライアント側APIからサーバー側APIに拡張したもので、Java Enterprise Edition (Java EE)テクノロジの重要な部分です。

バージョン

JDBC 4.3 APIには以前のバージョンのJDBC APIがすべて組み込まれています。
  • JDBC 4.2 API
  • JDBC 4.1 API
  • JDBC 4.0 API
  • JDBC 3.0 API
  • JDBC 2.1コアAPI
  • JDBC 2.0オプション・パッケージAPI
    (JDBC 2.1コアAPIとJDBC 2.0オプション・パッケージAPIを合わせてJDBC 2.0 APIと呼ぶ)
  • JDBC 1.2 API
  • JDBC 1.0 API

クラス、インタフェース、メソッド、フィールド、コンストラクタ、および例外には、これらがいつJavaプラットフォームに導入されたのかを示す次のsinceタグがあります。 これらの"since"タグがJDBC APIのJavadocコメントで使用される場合、次のことを示します:

  • since 9 -- JDBC 4.3 APIに新しく追加。Java SEプラットフォーム, Version 9の一部
  • since 1.8 -- JDBC 4.2 APIに新しく追加。Java SEプラットフォーム, Version 8の一部
  • since 1.7 -- JDBC 4.1 APIに新しく追加。Java SEプラットフォーム, Version 7の一部
  • since 1.6 -- JDBC 4.0 APIに新しく追加。Java SEプラットフォーム, Version 6の一部
  • since 1.4 -- JDBC 3.0 APIに新しく追加。J2SEプラットフォーム, Version 1.4の一部
  • since 1.2 -- JDBC 2.0 APIに新しく追加。J2SEプラットフォーム, Version 1.2の一部
  • 1.1以降、"since"タグがない -- 元のJDBC 1.0 APIおよびJDKバージョン1.1の一部

ノート: 新機能の多くはオプションです。したがって、ドライバおよびドライバがサポートする機能にはいくつかのバリエーションがあります。 機能を使用する前に、その機能がサポートされているかどうかをドライバのドキュメントで必ず確認してください。

注意: SQLPermissionクラスは、Java 2 SDK, Standard Editionバージョン1.3リリースで追加されました。 このクラスを使用すると、表名、列データなどの情報を格納するDriverManagerに関連したログ・ストリームへの無権限でのアクセスを防止できます。

java.sqlパッケージに含まれるもの

java.sqlパッケージは、次の用途のAPIを含んでいます。
  • DriverManager機能を介したデータベースとの接続
    • DriverManagerクラス -- ドライバとの接続
    • SQLPermissionクラス -- アプレットなどのセキュリティ・マネージャ内で実行されるコードがDriverManagerを介してログ・ストリームを設定しようとするときにアクセス権を許可する
    • Driverインタフェース -- JDBCテクノロジに基づくドライバ(JDBCドライバ)の登録および接続をAPIに提供する。通常はDriverManagerクラスだけが使用する
    • DriverPropertyInfoクラス -- JDBCドライバのプロパティを提供する。一般ユーザーは使用しない
  • データベースへのSQL文の送信
    • Statement -- 基本SQL文を送信する
    • PreparedStatement -- 準備済み文または基本SQL文を送信する(Statementから派生)
    • CallableStatement -- データベース・ストアド・プロシージャを呼び出す(PreparedStatementから派生)
    • Connectionインタフェース -- 文を作成し、接続とそのプロパティを管理するメソッドを提供する
    • Savepoint -- トランザクションでセーブポイントを提供する
  • クエリー結果の取得と更新
    • ResultSetインタフェース
  • SQL型をJavaプログラミング言語のクラスおよびインタフェースへ標準マッピング
    • Arrayインタフェース -- SQLの次をマッピングする: ARRAY
    • Blobインタフェース -- SQLの次をマッピングする: BLOB
    • Clobインタフェース -- SQLの次をマッピングする: CLOB
    • Dateクラス -- SQLの次をマッピングする: DATE
    • NClobインタフェース -- SQLの次をマッピングする: NCLOB
    • Refインタフェース -- SQLの次をマッピングする: REF
    • RowIdインタフェース -- SQLの次をマッピングする: ROWID
    • Structインタフェース -- SQLの次をマッピングする: STRUCT
    • SQLXMLインタフェース -- SQLの次をマッピングする: XML
    • Timeクラス -- SQLの次をマッピングする: TIME
    • Timestampクラス -- SQLの次をマッピングする: TIMESTAMP
    • Typesクラス -- SQL型の定数を提供する
  • SQLユーザー定義型(UDT)をJavaプログラミング言語のクラスへカスタム・マッピング
    • SQLDataインタフェース -- このクラスのインスタンスへのUDTのマッピングを指定する
    • SQLInputインタフェース -- ストリームからUDT属性を読み込むメソッドを提供する
    • SQLOutputインタフェース -- ストリームへUDT属性を書き込むメソッドを提供する
  • メタデータ
    • DatabaseMetaDataインタフェース -- データベースに関する情報を提供する
    • ResultSetMetaDataインタフェース -- ResultSetオブジェクトの列に関する情報を提供する
    • ParameterMetaDataインタフェース -- PreparedStatementコマンドのパラメータに関する情報を提供する
  • 例外
    • SQLException -- データ・アクセスの障害が発生したときにほとんどのメソッドによってスローされ、その他の理由により一部のメソッドによってスローされる
    • SQLWarning -- 警告を示すためにスローされる
    • DataTruncation -- データが切り詰められた可能性があることを示すためにスローされる
    • BatchUpdateException -- バッチ更新のコマンドがすべては正常に実行されなかったことを示すためにスローされる

JDBC 4.3 APIで導入されたjava.sqljavax.sqlの機能

  • Shardingサポートが追加されました
  • 独立した作業単位であるリクエストが開始または終了するというヒントをドライバに提供できるように、Connectionが拡張されました。
  • Shardingがサポートされているかどうかを判断するためのDatabaseMetaDataの拡張
  • 現在ロードされ使用可能なJDBCドライバのストリームを返すdriversメソッドをDriverManagerに追加しました。
  • Statementにリテラルと単純な識別子を含めるためのサポートが追加されました。
  • メソッドが非推奨となったJava SEバージョンを明確化

JDBC 4.2 APIで導入されたjava.sqljavax.sqlの機能

  • JDBCType列挙とSQLTypeインタフェースの追加
  • CallableStatementでのREF CURSORのサポート
  • LOBの最大論理サイズとREF CURSORのサポートの有無を返すDatabaseMetaDataメソッド
  • 大きい更新カウントのサポートの追加

JDBC 4.1 APIで導入されたjava.sqljavax.sqlの機能

  • ConnectionResultSet、およびStatementオブジェクトをtry-with-resources文で使用できる
  • CallableStatementResultSetにサポートが追加され、getObjectメソッドを使用して変換するJava型を指定しました。
  • DatabaseMetaDataの擬似列を返すメソッドおよび生成されたキーが常に返されるかどうかを返すメソッド
  • データベース・スキーマを指定し、物理接続を中止およびタイム・アウトさせるためのサポートのConnectionへの追加。
  • 依存するオブジェクトがクローズされた場合に、Statementオブジェクトをクローズするサポートの追加
  • DriverDataSourceConnectionPoolDataSourceおよびXADataSourceの親ロガーの取得のサポート

JDBC 4.0 APIで導入されたjava.sqljavax.sqlの機能

  • 自動java.sql.Driver検出 -- Class.forNameを使用したjava.sql.Driverクラスのロードは不要
  • 各国の文字セット・サポートの追加
  • SQL:2003 XMLデータ型に対するサポートの追加
  • SQLExceptionの拡張機能 -- 原因チェーンのサポートの追加。共通のSQLStateクラスの値コード用の新しいSQLExceptionの追加
  • BLOB/CLOB機能の拡張 -- BLOB/CLOBインスタンスを作成して解放するためのサポートの提供、およびアクセシビリティを向上させるメソッドの追加
  • SQL ROWIDにアクセスするためのサポートの追加
  • JDBCアプリケーションで、通常はアプリケーション・サーバーまたは接続プール環境にある、ベンダーによってラップされたJDBCリソースのインスタンスにアクセスするためのサポートの追加
  • PooledConnectionに関連付けられたPreparedStatementがクローズされたか、無効であるとドライバが判断したときに通知される機能

JDBC 3.0 APIで導入されたjava.sqljavax.sqlの機能

  • プール文 -- プール接続に関連した文を再利用する
  • セーブポイント -- 指定されたセーブポイントまでトランザクションをロールバックする
  • ConnectionPoolDataSourceに定義されたプロパティ -- 接続のプール方法を指定する
  • PreparedStatementオブジェクトのパラメータのメタデータ
  • 自動生成された列から値を取得する
  • 同時にオープンされているCallableStatementオブジェクトから複数のResultSetオブジェクトを返す
  • CallableStatementオブジェクトへのパラメータを名前とインデックスによって識別する
  • ResultSet保持機能 -- トランザクションの終了時にカーソルをオープンの状態に保持するべきかクローズの状態に保持するべきかを指定する
  • Refオブジェクトが参照するSQL構造化型インスタンスを取得および更新する
  • BLOBCLOBARRAY、およびREFの各値をプログラムによって更新する。
  • java.sql.Types.DATALINKデータ型の追加 -- JDBCドライバがデータ・ソースの外部に格納されたオブジェクトにアクセスできるようにする
  • SQL型階層を取得するメタデータの追加

JDBC 2.1コアAPIで導入されたjava.sql機能

  • スクロール可能な結果セット -- 現在位置から特定の行または位置へのカーソルの相対的な移動を可能にする、ResultSetインタフェースの新しいメソッドを使用
  • バッチ更新
  • プログラムによる更新 -- ResultSet更新用メソッドを使用
  • 新しいデータ型 -- SQL3データ型をマッピングするインタフェース
  • ユーザー定義型(UDT)のカスタム・マッピング
  • その他の機能として、パフォーマンスのヒント、文字ストリームの使用、java.math.BigDecimal値の全精度、追加セキュリティ、日、時間、およびタイムスタンプの各値でのタイムゾーンのサポートなど。

JDBC 2.0オプション・パッケージAPIで導入されたjavax.sql機能

  • 接続を確立するための手段としてのDataSourceインタフェース。 Java Naming and Directory Interface (JNDI)は、DataSourceオブジェクトをネーミング・サービスに登録するため、およびそれを取得するために使用されます。
  • プール接続 -- 接続の使用と再利用を可能にする
  • 分散トランザクション -- 多様なDBMSサーバーに及ぶトランザクションを可能にする
  • RowSetテクノロジ -- データを処理して渡す便利な手段を提供する

UDTのカスタム・マッピング

SQLで定義したユーザー定義型(UDT)をJavaプログラミング言語のクラスにマッピングできます。 SQL構造化型またはSQL DISTINCT型が、カスタム・マッピングできるUDTです。 次の3つのステップで、カスタム・マッピングを設定します。
  1. SQL構造化型またはSQL DISTINCT型をSQLで定義します
  2. SQL UDTをマッピングするJavaプログラミング言語のクラスを定義します。 このクラスはSQLDataインタフェースを実装している必要があります。
  3. 次の2項目を含むConnectionオブジェクトの型マップにエントリを作成します。
    • UDTの完全指定されたSQL名
    • SQLDataインタフェースを実装するクラスのClassオブジェクト

これらがUDTの該当位置にあると、ResultSet.getObjectまたはCallableStatement.getObjectメソッドを呼び出した場合にUDTは自動的にUDTへのカスタム・マッピングを取得します。 また、PreparedStatement.setObjectは、オブジェクトをそのSQL型へ自動的にマッピングしてデータ・ソースにオブジェクトを格納します。

パッケージの仕様

関連項目

  • インタフェースのサマリー
    インタフェース 説明
    Array
    SQL型ARRAYのJavaプログラミング言語でのマッピングです。
    Blob
    SQL BLOB値のJavaプログラミング言語での(マッピング)表現。
    CallableStatement
    SQLストアド・プロシージャを実行するのに使用されるインタフェースです。
    Clob
    SQL CLOB型のJavaプログラミング言語でのマッピング。
    Connection
    特定のデータベースとの接続(セッション)を表現します。
    ConnectionBuilder
    DataSourceオブジェクトから作成されたビルダー。data sourceオブジェクトが表すデータベースへの接続を確立するために使用されます。
    DatabaseMetaData
    データベースに関する包括的な情報です。
    Driver
    すべてのドライバ・クラスが実装しなければならないインタフェースです。
    DriverAction
    DriverDriverManagerからの通知を希望する場合に実装する必要があるインタフェースです。
    NClob
    SQL NCLOB型のJavaプログラミング言語でのマッピング。
    ParameterMetaData
    PreparedStatementオブジェクト内の各パラメータ・マーカーの型とプロパティに関する情報を取得するのに使用できるオブジェクトです。
    PreparedStatement
    プリコンパイルされたSQL文を表すオブジェクトです。
    Ref
    Javaプログラミング言語でのSQL REF値のマッピングで、データベースのSQL構造化型の値への参照となります。
    ResultSet
    データベースの結果セットを表すデータの表で、通常、データベースに照会する文を実行することによって生成されます。
    ResultSetMetaData
    ResultSetオブジェクトの列の型とプロパティに関する情報を取得するのに使用できるオブジェクトです。
    RowId
    SQL ROWID値のJavaプログラミング言語での表現(マッピング)です。
    Savepoint
    Connection.rollbackメソッドから参照される現在のトランザクション内のポイントであるセーブポイントの表現です。
    ShardingKey
    このオブジェクトがシャーディング・キーを表すことを示すために使用されるインタフェースです。
    ShardingKeyBuilder
    DataSourceまたはXADataSourceオブジェクトから作成され、サポートされるデータ型のサブキーを持つShardingKeyを作成するために使用されるビルダー。
    SQLData
    SQLユーザー定義型(UDT)をJavaプログラミング言語のクラスにカスタム・マッピングするのに使用されるインタフェースです。
    SQLInput
    SQL構造化型またはSQLの個別の型のインスタンスを表す値のストリームを格納する入力ストリームです。
    SQLOutput
    ユーザー定義型の属性をデータベースに書き戻すための出力ストリームです。
    SQLType
    JDBC型またはベンダー固有データ型と呼ばれる汎用SQL型を識別するために使用されるオブジェクトです。
    SQLXML
    SQL XML型のJavaTMプログラミング言語でのマッピングです。
    Statement
    静的SQL文を実行し、作成された結果を返すために使用されるオブジェクトです。
    Struct
    SQL構造化型のJavaプログラミング言語の標準のマッピングです。
    Wrapper
    委譲インスタンスが実際はプロキシ・クラスであるときにそのインスタンスを取得できる、JDBCクラスのインタフェースです。
  • クラスのサマリー
    クラス 説明
    Date
    ミリ秒の値をラップする薄いラッパーであり、これによってJDBCがミリ秒の値をSQL DATE値として扱うことができるようになります。
    DriverManager
    一連のJDBCドライバを管理するための基本的なサービスです。
    DriverPropertyInfo
    接続用のドライバ・プロパティです。
    SQLPermission
    SecurityManagerを有効にしてアプリケーションを実行しているコードが有効なときにSecurityManagerがチェックするアクセス権は、DriverManager.deregisterDriverメソッド、DriverManager.setLogWriterメソッド、DriverManager.setLogStream (deprecated)メソッド、SyncFactory.setJNDIContextメソッド、SyncFactory.setLoggerメソッド、Connection.setNetworkTimeoutメソッド、またはConnection.abortメソッドを呼び出します。
    Time
    java.util.Dateクラスの薄いラッパーで、このラッパーによってJDBC APIはこれをSQL TIME値として識別できます。
    Timestamp
    このクラスは、java.util.Dateの薄いラッパーで、このラッパーによってJDBC APIはこれをSQL TIMESTAMP値として識別できます。
    Types
    JDBC型と呼ばれる、汎用SQL型を識別するために使用する定数を定義するクラスです。
  • 列挙型のサマリー
    列挙型 説明
    ClientInfoStatus
    Connection.setClientInfoの呼出しによってプロパティを設定できない理由の状態の列挙です。
    JDBCType
    JDBC型と呼ばれる、汎用SQL型を識別するために使用する定数を定義します。
    PseudoColumnUsage
    擬似/隠し列の使用の列挙を表す列挙です。
    RowIdLifetime
    RowIdの寿命の値の列挙です。
  • 例外のサマリー
    例外 説明
    BatchUpdateException
    バッチ更新操作中にエラーが発生したときにスローされるSQLExceptionのサブクラスです。
    DataTruncation
    MaxFieldSizeを超過した以外の理由でデータ値が予期せず切り詰められたときに、DataTruncation例外としてスローされる例外(書込み時)、またはDataTruncation警告として報告される例外(読込み時)です。
    SQLClientInfoException
    1つ以上のクライアント情報プロパティをConnectionで設定できなかったときに、SQLExceptionのサブクラスがスローされます。
    SQLDataException
    SQLStateクラス値が「22」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。
    SQLException
    データベース・アクセス・エラーまたはその他のエラーに関する情報を提供する例外です。
    SQLFeatureNotSupportedException
    SQLStateクラス値が「0A」(ゼロA)のときにスローされるSQLExceptionのサブクラスです。
    SQLIntegrityConstraintViolationException
    SQLStateクラス値が「23」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。
    SQLInvalidAuthorizationSpecException
    SQLStateクラス値が「28」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。
    SQLNonTransientConnectionException
    SQLStateクラス値が「08」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。
    SQLNonTransientException
    SQLExceptionの原因が修正されないかぎり、同じ操作を再試行してもインスタンスが失敗するときにスローされるSQLExceptionのサブクラスです。
    SQLRecoverableException
    アプリケーションが回復ステップを実行してトランザクション全体(分散トランザクションの場合はトランザクション・ブランチ)を再試行すれば前回失敗した操作が成功する可能性があるときにスローされるSQLExceptionのサブクラスです。
    SQLSyntaxErrorException
    SQLStateクラス値が「42」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。
    SQLTimeoutException
    Statement.setQueryTimeoutDriverManager.setLoginTimeoutDataSource.setLoginTimeoutXADataSource.setLoginTimeoutで指定されたタイムアウトの期限が切れたときにスローされる、SQLExceptionのサブクラスです。
    SQLTransactionRollbackException
    SQLStateクラス値が「40」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。
    SQLTransientConnectionException
    SQLStateクラス値が「08」であるか、またはベンダー指定の条件下にあるときのための、SQLExceptionのサブクラスです。
    SQLTransientException
    前回失敗した操作が、アプリケーション・レベルの機能による介入がなくても再試行時に成功する可能性がある状況では、SQLExceptionのサブクラスがスローされます。
    SQLWarning
    データベース・アクセスの警告に関する情報を提供する例外です。