目次 | 前の項目 | 次の項目 JDBCTM ガイド: 入門


12 データベース製品ごとの相違と拡張

もっとも望ましいのは、データベースが異なっても同じように動作する標準の JDBC API があることです。しかし、データベースごとにサポートされる SQL の機能が異なり、セマンティクスの異なる操作があることは避けられません。

12.1     許される相違

すべての JDBC ドライバは、java.sql.Connection、java.sql.Statement、java.sql.PreparedStatement、java.sql.CallableStatement、および java.sql.Resultset のメソッドをすべてサポートしなければなりません。ストアドプロシージャの OUT パラメータをサポートしていないデータベースでは、CallableStatement の registerOutParameter メソッドおよび getXXX 系メソッドで SQLException が発生します。

実際に使うことのできる SQL は、データベースごとに若干異なります。たとえば、データベースが異なると、外部結合のサポート方法も異なります。java.sql.DatabaseMetaData インタフェースで提供されている各種メソッドを使うと、特定のデータベースでサポートされている SQL の機能を正確に知ることができます。同様に、データベースによって構文の異なる SQL 機能も多くあり、これについても java.sql.DatabaseMetaData で調べることができます。ただし、JDBC 準拠のテストに合格するには、ドライバが少なくとも ANSI SQL-2 エントリレベルの構文とセマンティクスをサポートし、さらに第 11 章の一覧に示されている SQL 拡張機能をサポートしている必要があります。

最後に、トランザクション遮断レベルなど基本プロパティの中にも、データベースによって異なるものがあります。現在のデータベースがサポートしているデフォルトのプロパティとその範囲についても、DatabaseMetaData で取得できます。

12.2     ベンダー固有の拡張

JDBC が提供する標準 API は、すべてのデータベースで動作することを意図して作られています。しかし、データベースベンダーが、自社のデータベースだけがサポートする追加機能を公開しようとする場合があります。

固有機能を追加するには、既存の JDBC 型の新しいサブタイプを追加し、そこで固有機能のためのメソッドを提供します。Foobah 社を例にとると、標準の java.sql.Statement 型を継承する新しい Java 型 foobah.sql.FooBahStatement を定義し、その型で新しい機能を追加します。



目次 | 前の項目 | 次の項目
jdbc@wombat.eng.sun.com または jdbc-odbc@wombat.eng.sun.com
Copyright © 1996, 1997 Sun Microsystems, Inc. All rights reserved.