パッケージjava.sql
パッケージjava.sql
Javaプログラミング言語を使用して、データ・ソース(通常はリレーショナル・データベース)に格納されているデータにアクセスして処理するためのAPIを提供します。 このAPIに含まれているフレームワークで、複数のドライバをインストールして複数のデータ・ソースに動的にアクセスできます。 JDBC APIは主にSQL文をデータベースに渡すことを目的としていますが、表形式のデータ・ソースからのデータの読取りおよび書込みを可能にします。
JDBC 4.3 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で導入された
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がすべて組み込まれています。- The 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の一部
ノート: 新機能の多くはオプションです。したがって、ドライバおよびドライバがサポートする機能にはいくつかのバリエーションがあります。 機能を使用する前に、その機能がサポートされているかどうかをドライバのドキュメントで必ず確認してください。
java.sqlパッケージに含まれるもの
java.sqlパッケージは、次の用途のAPIを含んでいます。
DriverManager機能を介したデータベースとの接続DriverManagerクラス -- ドライバとの接続Driverインタフェース -- JDBCテクノロジに基づくドライバ(JDBCドライバ)の登録および接続をAPIに提供する。通常はDriverManagerクラスだけが使用するDriverPropertyInfoクラス -- JDBCドライバのプロパティを提供する。一般ユーザーは使用しない
- データベースへのSQL文の送信
Statement-- 基本SQL文を送信するPreparedStatement-- 準備済み文または基本SQL文を送信する(Statementから派生)CallableStatement-- データベース・ストアド・プロシージャを呼び出す(PreparedStatementから派生)Connectionインタフェース -- 文を作成し、接続とそのプロパティを管理するメソッドを提供するSavepoint-- トランザクションでセーブポイントを提供する
- クエリー結果の取得と更新
ResultSetインタフェース
- SQL型をJavaプログラミング言語のクラスおよびインタフェースへ標準マッピング
Arrayインタフェース -- SQLARRAYをマッピングするBlobインタフェース -- SQLBLOBをマッピングするClobインタフェース -- SQLCLOBをマッピングするDateクラス -- SQLDATEをマッピングするNClobインタフェース -- SQLNCLOBをマッピングするRefインタフェース -- SQLREFをマッピングするRowIdインタフェース -- SQLROWIDをマッピングするStructインタフェース -- SQLSTRUCTをマッピングするSQLXMLインタフェース -- SQLXMLをマッピングするTimeクラス -- SQLTIMEをマッピングするTimestampクラス -- SQLTIMESTAMPをマッピングする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.sqlとjavax.sqlの機能
Shardingサポートが追加されました- リクエスト(独立した作業単位)が開始または終了していることを示すヒントをドライバに提供できるように拡張された
Connection - Shardingがサポートされているかどうかを判断するための
DatabaseMetaDataの拡張 - 現在ロードされ使用可能なJDBCドライバのストリームを返す
driversメソッドをDriverManagerに追加しました。 Statementにリテラルと単純な識別子を含めるためのサポートが追加されました。- メソッドが非推奨となったJava SEバージョンを明確化
JDBC 4.2 APIで導入されたjava.sqlとjavax.sqlの機能
JDBCType列挙とSQLTypeインタフェースの追加CallableStatementでのREF CURSORのサポート- LOBの最大論理サイズとREF CURSORのサポートの有無を返す
DatabaseMetaDataメソッド - 大きい更新カウントのサポートの追加
JDBC 4.1 APIで導入されたjava.sqlとjavax.sqlの機能
Connection、ResultSet、およびStatementオブジェクトをtry-with-resources文で使用できるCallableStatementとResultSetにサポートが追加され、getObjectメソッドを使用して変換するJava型を指定しました。DatabaseMetaDataの擬似列を返すメソッドおよび生成されたキーが常に返されるかどうかを返すメソッド- データベース・スキーマを指定し、物理接続を中止およびタイム・アウトさせるためのサポートの
Connectionへの追加。 - 依存するオブジェクトがクローズされた場合に、
Statementオブジェクトをクローズするサポートの追加 Driver、DataSource、ConnectionPoolDataSourceおよびXADataSourceの親ロガーの取得のサポート
JDBC 4.0 APIで導入されたjava.sqlとjavax.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.sqlとjavax.sqlの機能
- プール文 -- プール接続に関連した文を再利用する
- セーブポイント -- 指定されたセーブポイントまでトランザクションをロールバックする
ConnectionPoolDataSourceに定義されたプロパティ -- 接続のプール方法を指定するPreparedStatementオブジェクトのパラメータのメタデータ- 自動生成された列から値を取得する
- 同時にオープンされている
CallableStatementオブジェクトから複数のResultSetオブジェクトを返す CallableStatementオブジェクトへのパラメータを名前とインデックスによって識別するResultSet保持機能 -- トランザクションの終了時にカーソルをオープンの状態に保持するべきかクローズの状態に保持するべきかを指定するRefオブジェクトが参照するSQL構造化型インスタンスを取得および更新するBLOB、CLOB、ARRAY、および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構造化型またはSQLDISTINCT型が、カスタム・マッピングできるUDTです。 次の3つのステップで、カスタム・マッピングを設定します。
- SQL構造化型またはSQL
DISTINCT型をSQLで定義します - SQL UDTをマッピングするJavaプログラミング言語のクラスを定義します。 このクラスは
SQLDataインタフェースを実装している必要があります。 - 次の2項目を含む
Connectionオブジェクトの型マップにエントリを作成します。- UDTの完全指定されたSQL名
SQLDataインタフェースを実装するクラスのClassオブジェクト
これらがUDTの該当位置にあると、ResultSet.getObjectまたはCallableStatement.getObjectメソッドを呼び出した場合にUDTは自動的にUDTへのカスタム・マッピングを取得します。 また、PreparedStatement.setObjectは、オブジェクトをそのSQL型へ自動的にマッピングしてデータ・ソースにオブジェクトを格納します。
パッケージの仕様
関連項目
- レッスン:JDBC Basics(The Java Tutorials > JDBC Database Access)
- " 「JDBC APIチュートリアルおよびリファレンス,サード・エディション」 "
- 導入されたバージョン:
- 1.1
-
クラス説明SQL型
ARRAYのJavaプログラミング言語でのマッピングです。バッチ更新操作中にエラーが発生したときにスローされるSQLExceptionのサブクラスです。SQLBLOB値のJavaプログラミング言語での(マッピング)表現。SQLストアド・プロシージャを実行するのに使用されるインタフェースです。Connection.setClientInfoの呼出しによってプロパティを設定できない理由の状態の列挙です。SQLCLOB型のJavaプログラミング言語でのマッピング。特定のデータベースとの接続(セッション)を表現します。DataSourceオブジェクトから作成されたビルダーで、data sourceオブジェクトが表すデータベースへの接続を確立するために使用されます。データベースに関する包括的な情報です。MaxFieldSizeを超過した以外の理由でデータ値が予期せず切り詰められたときに、DataTruncation例外としてスローされる例外(書込み時)、またはDataTruncation警告として報告される例外(読込み時)です。ミリ秒の値をラップする薄いラッパーであり、これによってJDBCがミリ秒の値をSQLDATE値として扱うことができるようになります。すべてのドライバ・クラスが実装しなければならないインタフェースです。DriverがDriverManagerからの通知を希望する場合に実装する必要があるインタフェースです。一連のJDBCドライバを管理するための基本的なサービスです。接続用のドライバ・プロパティです。JDBC型と呼ばれる、汎用SQL型を識別するために使用する定数を定義します。SQLNCLOB型のJavaプログラミング言語でのマッピング。PreparedStatementオブジェクト内の各パラメータ・マーカーの型とプロパティに関する情報を取得するのに使用できるオブジェクトです。プリコンパイルされたSQL文を表すオブジェクトです。擬似/隠し列の使用の列挙を表す列挙です。Javaプログラミング言語でのSQLREF値のマッピングで、データベースのSQL構造化型の値への参照となります。データベースの結果セットを表すデータの表で、通常、データベースに照会する文を実行することによって生成されます。ResultSetオブジェクトの列の型とプロパティに関する情報を取得するのに使用できるオブジェクトです。SQL ROWID値のJavaプログラミング言語での表現(マッピング)です。RowIdの寿命の値の列挙です。Connection.rollbackメソッドから参照される現在のトランザクション内のポイントであるセーブポイントの表現です。このオブジェクトがシャーディング・キーを表すことを示すインタフェース。DataSourceまたはXADataSourceオブジェクトから作成されたビルダーで、サポートされているデータ型のサブキーを持つShardingKeyを作成するために使用されます。1つ以上のクライアント情報プロパティをConnectionで設定できなかったときに、SQLExceptionのサブクラスがスローされます。SQLユーザー定義型(UDT)をJavaプログラミング言語のクラスにカスタム・マッピングするのに使用されるインタフェースです。SQLStateクラス値が「22」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。データベース・アクセス・エラーまたはその他のエラーに関する情報を提供する例外です。SQLStateクラス値が「0A」(ゼロA)のときにスローされるSQLExceptionのサブクラスです。SQL構造化型またはSQLの個別の型のインスタンスを表す値のストリームを格納する入力ストリームです。SQLStateクラス値が「23」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。SQLStateクラス値が「28」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。SQLStateクラス値が「08」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。SQLExceptionの原因が修正されないかぎり、同じ操作を再試行してもインスタンスが失敗するときにスローされるSQLExceptionのサブクラスです。ユーザー定義型の属性をデータベースに書き戻すための出力ストリームです。SQLPermissionオブジェクトには名前(「ターゲット名」とも呼ばれる)は含まれますが、アクション・リストは含まれません。したがって、名前付きアクセス権が存在するか、存在しないかのどちらかになります。アプリケーションが回復ステップを実行してトランザクション全体(分散トランザクションの場合はトランザクション・ブランチ)を再試行すれば前回失敗した操作が成功する可能性があるときにスローされるSQLExceptionのサブクラスです。SQLStateクラス値が「42」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。Statement.setQueryTimeout、DriverManager.setLoginTimeout、DataSource.setLoginTimeout、XADataSource.setLoginTimeoutで指定されたタイムアウトの期限が切れたときにスローされる、SQLExceptionのサブクラスです。SQLStateクラス値が「40」であるか、またはベンダー指定の条件下にあるときにスローされるSQLExceptionのサブクラスです。SQLStateクラス値が「08」であるか、またはベンダー指定の条件下にあるときのための、SQLExceptionのサブクラスです。前回失敗した操作が、アプリケーション・レベルの機能による介入がなくても再試行時に成功する可能性がある状況では、SQLExceptionのサブクラスがスローされます。JDBC型またはベンダー固有データ型と呼ばれる汎用SQL型を識別するために使用されるオブジェクトです。データベース・アクセスの警告に関する情報を提供する例外です。SQL XML型のJavaTMプログラミング言語でのマッピングです。静的SQL文を実行し、作成された結果を返すために使用されるオブジェクトです。SQL構造化型のJavaプログラミング言語の標準のマッピングです。java.util.Dateクラスの薄いラッパーで、このラッパーによってJDBC APIはこれをSQLTIME値として識別できます。このクラスは、java.util.Dateの薄いラッパーで、このラッパーによってJDBC APIはこれをSQLTIMESTAMP値として識別できます。JDBC型と呼ばれる、汎用SQL型を識別するために使用する定数を定義するクラスです。委譲インスタンスが実際はプロキシ・クラスであるときにそのインスタンスを取得できる、JDBCクラスのインタフェースです。