# Wrapper

Added in[API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Summary:[Methods](https://developer.android.com/reference/java/sql/Wrapper#pubmethods)  

# Wrapper

`
public


interface
Wrapper
`  
`


`

|------------------|
| java.sql.Wrapper |

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Known indirect subclasses [CallableStatement](https://developer.android.com/reference/java/sql/CallableStatement),[Connection](https://developer.android.com/reference/java/sql/Connection),[DataSource](https://developer.android.com/reference/javax/sql/DataSource),[DatabaseMetaData](https://developer.android.com/reference/java/sql/DatabaseMetaData),[ParameterMetaData](https://developer.android.com/reference/java/sql/ParameterMetaData),[PreparedStatement](https://developer.android.com/reference/java/sql/PreparedStatement),[ResultSet](https://developer.android.com/reference/java/sql/ResultSet),[ResultSetMetaData](https://developer.android.com/reference/java/sql/ResultSetMetaData),[RowSet](https://developer.android.com/reference/javax/sql/RowSet),[RowSetMetaData](https://developer.android.com/reference/javax/sql/RowSetMetaData),[Statement](https://developer.android.com/reference/java/sql/Statement) |-----------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------| | [CallableStatement](https://developer.android.com/reference/java/sql/CallableStatement) | The interface used to execute SQL stored procedures.                                                                                  | | [Connection](https://developer.android.com/reference/java/sql/Connection)               | A connection (session) with a specific database.                                                                                      | | [DataSource](https://developer.android.com/reference/javax/sql/DataSource)              | A factory for connections to the physical data source that this`DataSource`object represents.                                         | | [DatabaseMetaData](https://developer.android.com/reference/java/sql/DatabaseMetaData)   | Comprehensive information about the database as a whole.                                                                              | | [ParameterMetaData](https://developer.android.com/reference/java/sql/ParameterMetaData) | An object that can be used to get information about the types and properties for each parameter marker in a`PreparedStatement`object. | | [PreparedStatement](https://developer.android.com/reference/java/sql/PreparedStatement) | An object that represents a precompiled SQL statement.                                                                                | | [ResultSet](https://developer.android.com/reference/java/sql/ResultSet)                 | A table of data representing a database result set, which is usually generated by executing a statement that queries the database.    | | [ResultSetMetaData](https://developer.android.com/reference/java/sql/ResultSetMetaData) | An object that can be used to get information about the types and properties of the columns in a`ResultSet`object.                    | | [RowSet](https://developer.android.com/reference/javax/sql/RowSet)                      | The interface that adds support to the JDBC API for the JavaBeans^TM^component model.                                                 | | [RowSetMetaData](https://developer.android.com/reference/javax/sql/RowSetMetaData)      | An object that contains information about the columns in a`RowSet`object.                                                             | | [Statement](https://developer.android.com/reference/java/sql/Statement)                 | The object used for executing a static SQL statement and returning the results it produces.                                           | |

<br />

*** ** * ** ***

Interface for JDBC classes which provide the ability to retrieve the delegate instance when the instance in question is in fact a proxy class.

The wrapper pattern is employed by many JDBC driver implementations to provide extensions beyond the traditional JDBC API that are specific to a data source. Developers may wish to gain access to these resources that are wrapped (the delegates) as proxy class instances representing the the actual resources. This interface describes a standard mechanism to access these wrapped resources represented by their proxy, to permit direct access to the resource delegates.

## Summary

|                                                                                                                                                                 ### Public methods                                                                                                                                                                 ||
|---------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract boolean` | ` `[isWrapperFor](https://developer.android.com/reference/java/sql/Wrapper#isWrapperFor(java.lang.Class<?>))`(`[Class](https://developer.android.com/reference/java/lang/Class)`<?> iface) ` Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.    |
| ` abstract <T> T`   | ` `[unwrap](https://developer.android.com/reference/java/sql/Wrapper#unwrap(java.lang.Class<T>))`(`[Class](https://developer.android.com/reference/java/lang/Class)`<T> iface) ` Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. |

## Public methods

### isWrapperFor

Added in[API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

```
public abstract boolean isWrapperFor (Class<?> iface)
```

Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively calling`isWrapperFor`on the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared to`unwrap`so that callers can use this method to avoid expensive`unwrap`calls that may fail. If this method returns true then calling`unwrap`with the same argument should succeed.

<br />

|                       Parameters                        ||
|---------|------------------------------------------------|
| `iface` | `Class`: a Class defining an interface. <br /> |

|                                                   Returns                                                    ||
|-----------|---------------------------------------------------------------------------------------------------|
| `boolean` | true if this implements the interface or directly or indirectly wraps an object that does. <br /> |

|                                                                                        Throws                                                                                         ||
|-------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | if an error occurs while determining whether this is a wrapper for an object with the given interface. |

### unwrap

Added in[API level 9](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  

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

Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. If the receiver implements the interface then the result is the receiver or a proxy for the receiver. If the receiver is a wrapper and the wrapped object implements the interface then the result is the wrapped object or a proxy for the wrapped object. Otherwise return the the result of calling`unwrap`recursively on the wrapped object or a proxy for that result. If the receiver is not a wrapper and does not implement the interface, then an`SQLException`is thrown.

<br />

|                                       Parameters                                       ||
|---------|-------------------------------------------------------------------------------|
| `iface` | `Class`: A Class defining an interface that the result must implement. <br /> |

|                                                 Returns                                                 ||
|-----|----------------------------------------------------------------------------------------------------|
| `T` | an object that implements the interface. May be a proxy for the actual implementing object. <br /> |

|                                                             Throws                                                              ||
|-------------------------------------------------------------------------------|--------------------------------------------------|
| [SQLException](https://developer.android.com/reference/java/sql/SQLException) | If no object found that implements the interface |