unwrap メソッド (SQLServerCallableStatement)
指定されたインターフェイスを実装するオブジェクトを返します。このメソッドから返されたオブジェクトを使用することで、Microsoft SQL Server JDBC Driver 固有のメソッドにアクセスできます。
メモ : |
---|
この機能は、Microsoft SQL Server JDBC Driver Version 2.0 から導入されました。 |
public <T> T unwrap(Class<T> iface)
パラメーター
iface
インターフェイスを定義する T 型のクラスです。
戻り値
指定されたインターフェイスを実装するオブジェクトです。
例外
解説
unwrap メソッドは、JDBC 4.0 仕様で導入された java.sql.Wrapper インターフェイスで定義されています。
アプリケーションは Microsoft SQL Server JDBC Driver に固有の JDBC API 拡張機能にアクセスする必要がある場合があります。unwrap メソッドは、クラスがベンダー拡張を公開する場合、このオブジェクトが拡張するパブリック クラスへのアンラッピングをサポートします。
SQLServerCallableStatement クラスは、SQLServerStatement クラスから拡張された SQLServerPreparedStatement クラスを拡張します。このメソッドが呼び出されると、オブジェクトは SQLServerStatement、SQLServerPreparedStatement、SQLServerCallableStatement の各クラスにアンラップされます。
次のコード例では、isWrapperFor メソッドおよび unwrap メソッドを使用してドライバー拡張を確認し、setResponseBuffering や getResponseBuffering などのベンダー固有メソッドを呼び出す方法を示します。
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 のメンバー