次の方法で共有


unwrap メソッド (SQLServerCallableStatement)

指定されたインターフェイスを実装するオブジェクトを返します。このメソッドから返されたオブジェクトを使用することで、Microsoft SQL Server JDBC Driver 固有のメソッドにアクセスできます。

注メモ :

この機能は、Microsoft SQL Server JDBC Driver Version 2.0 から導入されました。

public <T> T unwrap(Class<T> iface)

パラメーター

iface

インターフェイスを定義する T 型のクラスです。

戻り値

指定されたインターフェイスを実装するオブジェクトです。

例外

SQLServerException

解説

unwrap メソッドは、JDBC 4.0 仕様で導入された java.sql.Wrapper インターフェイスで定義されています。

アプリケーションは Microsoft SQL Server JDBC Driver に固有の JDBC API 拡張機能にアクセスする必要がある場合があります。unwrap メソッドは、クラスがベンダー拡張を公開する場合、このオブジェクトが拡張するパブリック クラスへのアンラッピングをサポートします。

SQLServerCallableStatement クラスは、SQLServerStatement クラスから拡張された SQLServerPreparedStatement クラスを拡張します。このメソッドが呼び出されると、オブジェクトは SQLServerStatementSQLServerPreparedStatementSQLServerCallableStatement の各クラスにアンラップされます。

次のコード例では、isWrapperFor メソッドおよび unwrap メソッドを使用してドライバー拡張を確認し、setResponseBufferinggetResponseBuffering などのベンダー固有メソッドを呼び出す方法を示します。

public static void executeStoredProcedure(Connection con) {
   try {
    CallableStatement cstmt = 
       con.prepareCall("{call dbo.stored_proc_name(?, ?)}");
    
    // The recommended way to access the Microsoft SQL Server JDBC 
    // Driver-specific methods is to use the JDBC 4.0 Wrapper 
    // functionality. 
    // The following code statements demonstrates how to use the 
    // isWrapperFor and unwrap methods
    // to access the driver-specific response buffering methods.

    if (cstmt.isWrapperFor(
      com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.class)) {
     // The CallableStatement object can unwrap to 
     // SQLServerCallableStatement.
     SQLServerCallableStatement SQLcstmt = 
     cstmt.unwrap(
        com.microsoft.sqlserver.jdbc.SQLServerCallableStatement.class);
     SQLcstmt.setResponseBuffering("adaptive");
     System.out.println("Response buffering mode has been set to " +
         SQLcstmt.getResponseBuffering());
     }
     
    if (cstmt.isWrapperFor(
      com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.class)) {
      // The CallableStatement object can unwrap to 
      // SQLServerPreparedStatement.                  
      SQLServerPreparedStatement SQLpstmt = 
       cstmt.unwrap(
       com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.class);
      SQLpstmt.setResponseBuffering("adaptive");
      System.out.println("Response buffering mode has been set to " +
          SQLpstmt.getResponseBuffering());
    }
    if (cstmt.isWrapperFor(
      com.microsoft.sqlserver.jdbc.SQLServerStatement.class)) {

      // The CallableStatement object can unwrap to SQLServerStatement. 
      SQLServerStatement SQLstmt = 
        cstmt.unwrap(
        com.microsoft.sqlserver.jdbc.SQLServerStatement.class);
      SQLstmt.setResponseBuffering("adaptive");
      System.out.println("Response buffering mode has been set to " +
      SQLstmt.getResponseBuffering());
    }
  }
  catch (Exception e) {
     e.printStackTrace();
  }
} 

参照

関連項目

isWrapperFor メソッド (SQLServerCallableStatement)
SQLServerCallableStatement クラス

概念

SQLServerCallableStatement のメソッド
SQLServerCallableStatement のメンバー