ラッパーとインターフェイス

JDBC ドライバーのダウンロード

SQL Server 用 Microsoft JDBC ドライバー は、クラスのプロキシを作成できるインターフェイスと、SQL Server 用 Microsoft JDBC ドライバー に固有の JDBC API 拡張機能に対し、プロキシ インターフェイス経由でアクセスするためのラッパーをサポートします。

ラッパー

SQL Server 用 Microsoft JDBC ドライバー は、java.sql.Wrapper インターフェイスをサポートします。 このインターフェイスには、SQL Server 用 Microsoft JDBC ドライバー に固有の JDBC API 拡張機能に対し、プロキシ インターフェイス経由でアクセスするためのメカニズムが備わっています。

java.sql.Wrapper インターフェイスには、isWrapperForunwrap の 2 つのメソッドが定義されています。 isWrapperFor は、指定された入力オブジェクトに、このインターフェイスが実装されているかどうかをチェックするメソッドです。 unwrap メソッドは、このインターフェイスを実装するオブジェクトを返します。このメソッドから返されたオブジェクトを使用することで、SQL Server 用 Microsoft JDBC ドライバー 固有のメソッドにアクセスできます。

isWrapperFor メソッドと unwrap メソッドは、次のとおり公開されています。

インターフェイス

SQL Server JDBC Driver 3.0 以降では、関連付けられたクラスからドライバー固有のメソッドにアクセスするアプリケーション サーバーでインターフェイスを使用できます。 アプリケーション サーバーでは、プロキシを作成し、インターフェイスから SQL Server 用 Microsoft JDBC ドライバー 固有の機能を公開することで、クラスをラップできます。 SQL Server 用 Microsoft JDBC ドライバー では、アプリケーション サーバーがクラスのプロキシを作成できるように、SQL Server 用 Microsoft JDBC ドライバー 固有のメソッドと定数を持つインターフェイスをサポートします。

このインターフェイスは標準の Java インターフェイスから派生するため、オブジェクトをアンラップしてドライバー固有の機能または汎用 SQL Server 用 Microsoft JDBC ドライバー 機能にアクセスした後で、同じオブジェクトを使用できます。

次のインターフェイスが追加されています。

説明

このサンプルは、DataSource オブジェクトから SQL Server 用 Microsoft JDBC ドライバー 固有の関数にアクセスする方法を示しています。 この DataSource クラスはアプリケーション サーバーによってラップされた可能性があります。 JDBC Driver 固有の関数または定数にアクセスするには、データソースを ISQLServerDataSource インターフェイスにアンラップし、このインターフェイスで宣言された関数を使用できます。

コード

import javax.sql.*;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;

public class UnWrapTest {
   public static void main(String[] args) {
      // This is a test.  This DataSource object could be something from an appserver
      // which has wrapped the real SQLServerDataSource with its own wrapper
      SQLServerDataSource ds = new SQLServerDataSource();
      checkSendStringParametersAsUnicode(ds);
   }

   // Unwrap to the ISQLServerDataSource interface to access the getSendStringParametersAsUnicode function
   static void checkSendStringParametersAsUnicode(DataSource ds) {
      try {
         final ISQLServerDataSource sqlServerDataSource = ds.unwrap(ISQLServerDataSource.class);
         boolean sendStringParametersAsUnicode = sqlServerDataSource.getSendStringParametersAsUnicode();

         System.out.println("Send string as parameter value is:-" + sendStringParametersAsUnicode);

      } catch (SQLException sqlE) {
         System.out.println("Exception:-" + sqlE);
      }
   }
}

関連項目

JDBC ドライバーのデータ型について