次の方法で共有


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 は、ISQLServerStatement クラスから拡張された ISQLServerPreparedStatement クラスを実装します。このメソッドが呼び出されると、オブジェクトは SQLServerStatementSQLServerPreparedStatement、および SQLServerCallableStatement の各クラスにアンラップされます。

詳細については、「ラッパーとインターフェイス」を参照してください。

次のコード例では、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 のメンバー