Метод unwrap (SQLServerCallableStatement)
Возвращает объект, реализующий указанный интерфейс, чтобы разрешить доступ к методам Microsoft JDBC Driver для sql Server.
Синтаксис
public <T> T unwrap(Class<T> iface)
Параметры
iface
Класс типа T, определяющий интерфейс.
Возвращаемое значение
Объект, реализующий указанный интерфейс.
Исключения
Замечания
Метод unwrap определен интерфейсом java.sql.Wrapper, который появился в спецификации JDBC 4.0.
Приложениям может потребоваться доступ к расширениям API JDBC, которые относятся к драйверу Microsoft JDBC для SQL Server. Метод unwrap поддерживает развертывание в открытые классы, предоставляемые этим объектом, если эти классы реализуют расширения поставщиков.
SQLServerCallableStatement реализует интерфейс ISQLServerPreparedStatement, расширяющий интерфейс ISQLServerStatement. При вызове этого метода объект развертывается в следующие объекты: 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 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