Contenedores e interfaces
Microsoft JDBC Driver para SQL Server admite interfaces que permiten crear un proxy de una clase y contenedores que permiten acceder a extensiones para la API de JDBC que son específicas de Microsoft JDBC Driver para SQL Server mediante una interfaz de proxy.
Controladores
Microsoft JDBC Driver para SQL Server admite la interfaz java.sql.Wrapper. Esta interfaz proporciona un mecanismo para acceder a extensiones para la API de JDBC que son específicas de Microsoft JDBC Driver para SQL Server mediante una interfaz de proxy.
La interfaz java.sql.Wrapper define dos métodos: isWrapperFor y unwrap. El método isWrapperFor comprueba si el objeto de entrada especificado implementa esta interfaz. El método unwrap devuelve un objeto que implementa esta interfaz para permitir el acceso a los métodos específicos de Microsoft JDBC Driver para SQL Server.
los métodos isWrapperFor y Unwrap se exponen de la siguiente manera:
- Método isWrapperFor (SQLServerCallableStatement)
- Método unwrap (SQLServerCallableStatement)
- Método isWrapperFor (SQLServerConnectionPoolDataSource)
- Método unwrap (SQLServerConnectionPoolDataSource)
- Método isWrapperFor (SQLServerDataSource)
- Método unwrap (SQLServerDataSource)
- Método isWrapperFor (SQLServerPreparedStatement)
- Método unwrap (SQLServerPreparedStatement)
- Método isWrapperFor (SQLServerStatement)
- Método unwrap (SQLServerStatement)
- Método isWrapperFor (SQLServerXADataSource)
- Método unwrap (SQLServerXADataSource)
Interfaces
A partir de SQL Server JDBC Driver 3.0, las interfaces están disponibles para que un servidor de aplicaciones acceda a un método específico del controlador desde la clase asociada. El servidor de aplicaciones puede incluir la clase si crea un proxy, de forma que se exponga la funcionalidad específica de Microsoft JDBC Driver para SQL Server desde una interfaz. Microsoft JDBC Driver para SQL Server admite interfaces que tienen los métodos y constantes propios de Microsoft JDBC Driver para SQL Server, de forma que un servidor de aplicaciones pueda crear un proxy de la clase.
Las interfaces se derivan de interfaces de Java estándar, por lo que se puede usar el mismo objeto una vez que se haya desencapsulado para acceder a funcionalidad específica del controlador o a funcionalidad genérica de Microsoft JDBC Driver para SQL Server.
Se agregaron las siguientes interfaces:
- ISQLServerCallableStatement
- ISQLServerConnection
- ISQLServerDataSource
- ISQLServerPreparedStatement
- ISQLServerResultSet
- ISQLServerStatement
Ejemplo
Descripción
En este ejemplo se muestra cómo acceder a una función específica de Microsoft JDBC Driver para SQL Server desde un objeto DataSource. Es posible que un servidor de aplicaciones haya encapsulado esta clase DataSource. Para acceder a la función o constante específica del controlador JDBC, puede desencapsular el origen de datos en una interfaz ISQLServerDataSource y usar las funciones que se declaran en esta interfaz.
Código
import javax.sql.*;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.*;
public class UnWrapTest {
public static void main(String[] args) {
// This is a test. This DataSource object could be something from an appserver
// which has wrapped the real SQLServerDataSource with its own wrapper
SQLServerDataSource ds = new SQLServerDataSource();
checkSendStringParametersAsUnicode(ds);
}
// Unwrap to the ISQLServerDataSource interface to access the getSendStringParametersAsUnicode function
static void checkSendStringParametersAsUnicode(DataSource ds) {
try {
final ISQLServerDataSource sqlServerDataSource = ds.unwrap(ISQLServerDataSource.class);
boolean sendStringParametersAsUnicode = sqlServerDataSource.getSendStringParametersAsUnicode();
System.out.println("Send string as parameter value is:-" + sendStringParametersAsUnicode);
} catch (SQLException sqlE) {
System.out.println("Exception:-" + sqlE);
}
}
}