モジュール java.sql
パッケージ 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がすべて組み込まれています。- 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.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 Javaxx Tutorials > JDBC Database Access)
- " 「JDBC APIチュートリアルおよびリファレンス,サード・エディション」 "
-
インタフェース説明SQL型
ARRAY
のJavaプログラミング言語でのマッピングです。SQLBLOB
値のJavaプログラミング言語での(マッピング)表現。SQLストアド・プロシージャを実行するのに使用されるインタフェースです。SQLCLOB
型のJavaプログラミング言語でのマッピング。特定のデータベースとの接続(セッション)を表現します。DataSource
オブジェクトから作成されたビルダー。data source
オブジェクトが表すデータベースへの接続を確立するために使用されます。データベースに関する包括的な情報です。すべてのドライバ・クラスが実装しなければならないインタフェースです。DriverがDriverManager
からの通知を希望する場合に実装する必要があるインタフェースです。SQLNCLOB
型のJavaプログラミング言語でのマッピング。PreparedStatement
オブジェクト内の各パラメータ・マーカーの型とプロパティに関する情報を取得するのに使用できるオブジェクトです。プリコンパイルされたSQL文を表すオブジェクトです。Javaプログラミング言語でのSQLREF
値のマッピングで、データベースのSQL構造化型の値への参照となります。データベースの結果セットを表すデータの表で、通常、データベースに照会する文を実行することによって生成されます。ResultSet
オブジェクトの列の型とプロパティに関する情報を取得するのに使用できるオブジェクトです。SQL ROWID値のJavaプログラミング言語での表現(マッピング)です。Connection.rollback
メソッドから参照される現在のトランザクション内のポイントであるセーブポイントの表現です。このオブジェクトがシャーディング・キーを表すことを示すために使用されるインタフェースです。DataSource
またはXADataSource
オブジェクトから作成され、サポートされるデータ型のサブキーを持つShardingKey
を作成するために使用されるビルダー。SQLユーザー定義型(UDT)をJavaプログラミング言語のクラスにカスタム・マッピングするのに使用されるインタフェースです。SQL構造化型またはSQLの個別の型のインスタンスを表す値のストリームを格納する入力ストリームです。ユーザー定義型の属性をデータベースに書き戻すための出力ストリームです。JDBC型またはベンダー固有データ型と呼ばれる汎用SQL型を識別するために使用されるオブジェクトです。SQL XML型のJavaTMプログラミング言語でのマッピングです。静的SQL文を実行し、作成された結果を返すために使用されるオブジェクトです。SQL構造化型のJavaプログラミング言語の標準のマッピングです。委譲インスタンスが実際はプロキシ・クラスであるときにそのインスタンスを取得できる、JDBCクラスのインタフェースです。 -
クラス説明ミリ秒の値をラップする薄いラッパーであり、これによってJDBCがミリ秒の値をSQL
DATE
値として扱うことができるようになります。一連のJDBCドライバを管理するための基本的なサービスです。接続用のドライバ・プロパティです。SecurityManager
を有効にしてアプリケーションを実行しているコードが有効なときにSecurityManager
がチェックするアクセス権は、DriverManager.deregisterDriver
メソッド、DriverManager.setLogWriter
メソッド、DriverManager.setLogStream
(deprecated)メソッド、SyncFactory.setJNDIContext
メソッド、SyncFactory.setLogger
メソッド、Connection.setNetworkTimeout
メソッド、またはConnection.abort
メソッドを呼び出します。java.util.Date
クラスの薄いラッパーで、このラッパーによってJDBC APIはこれをSQLTIME
値として識別できます。このクラスは、java.util.Date
の薄いラッパーで、このラッパーによってJDBC APIはこれをSQLTIMESTAMP
値として識別できます。JDBC型と呼ばれる、汎用SQL型を識別するために使用する定数を定義するクラスです。 -
列挙クラス説明
Connection.setClientInfo
の呼出しによってプロパティを設定できない理由の状態の列挙です。JDBC型と呼ばれる、汎用SQL型を識別するために使用する定数を定義します。擬似/隠し列の使用の列挙を表す列挙です。RowIdの寿命の値の列挙です。 -
Exception説明バッチ更新操作中にエラーが発生したときにスローされる
SQLException
のサブクラスです。MaxFieldSize
を超過した以外の理由でデータ値が予期せず切り捨てられたときに、DataTruncation
例外としてスローされる例外(書込み時)、またはDataTruncation
警告として報告される例外(読取り時)です。1つ以上のクライアント情報プロパティをConnection
で設定できなかったときに、SQLException
のサブクラスがスローされます。SQLStateクラス値が「22」であるか、またはベンダー指定の条件下にあるときにスローされるSQLException
のサブクラスです。データベース・アクセス・エラーまたはその他のエラーに関する情報を提供する例外です。SQLStateクラス値が「0A」(ゼロA)のときにスローされるSQLException
のサブクラスです。SQLStateクラス値が「23」であるか、またはベンダー指定の条件下にあるときにスローされるSQLException
のサブクラスです。SQLStateクラス値が「28」であるか、またはベンダー指定の条件下にあるときにスローされるSQLException
のサブクラスです。SQLStateクラス値が「08」であるか、またはベンダー指定の条件下にあるときにスローされるSQLException
のサブクラスです。SQLException
の原因が修正されないかぎり、同じ操作を再試行してもインスタンスが失敗するときにスローされるSQLException
のサブクラスです。アプリケーションが回復ステップを実行してトランザクション全体(分散トランザクションの場合はトランザクション・ブランチ)を再試行すれば前回失敗した操作が成功する可能性があるときにスローされるSQLException
のサブクラスです。SQLStateクラス値が「42」であるか、またはベンダー指定の条件下にあるときにスローされるSQLException
のサブクラスです。Statement.setQueryTimeout
、DriverManager.setLoginTimeout
、DataSource.setLoginTimeout
、XADataSource.setLoginTimeout
で指定されたタイムアウトの期限が切れたときにスローされる、SQLException
のサブクラスです。SQLStateクラス値が「40」であるか、またはベンダー指定の条件下にあるときにスローされるSQLException
のサブクラスです。SQLStateクラス値が「08」であるか、またはベンダー指定の条件下にあるときのための、SQLException
のサブクラスです。前回失敗した操作が、アプリケーション・レベルの機能による介入がなくても再試行時に成功する可能性がある状況では、SQLException
のサブクラスがスローされます。データベース・アクセスの警告に関する情報を提供する例外です。