El Controlador Microsoft JDBC para SQL Server admite interfaces que permiten crear un proxy de una clase y contenedores que hacen posible el acceso a extensiones para la API de JDBC que son específicas del Controlador Microsoft JDBC para SQL Server mediante una interfaz de proxy.
Controladores
El Controlador Microsoft JDBC para SQL Server admite la interfaz java.sql.Wrapper. Esta interfaz proporciona un mecanismo para obtener acceso a las extensiones para la API de JDBC que son específicas del Controlador Microsoft JDBC 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 del Controlador Microsoft JDBC para SQL Server.
Los métodos isWrapperFor y unwrap se exponen de la siguiente forma:
Interfaces
Desde el controlador JDBC 3.0 de SQL Server, las interfaces están disponibles para que un servidor de aplicaciones obtenga acceso a un método específico del controlador desde la clase asociada. El servidor de aplicaciones puede incluir la clase si se crea un proxy, de forma que se exponga la funcionalidad específica del Controlador Microsoft JDBC para SQL Server desde una interfaz. El Controlador Microsoft JDBC para SQL Server admite interfaces que tienen los métodos y constantes propios del Controlador Microsoft JDBC 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 se haya desencapsulado para tener acceso a funcionalidad específica del controlador o a funcionalidad genérica del Controlador Microsoft JDBC para SQL Server.
Se agregaron las siguientes interfaces:
Ejemplo
Descripción
En este ejemplo se muestra cómo obtener acceso a una función específica del Controlador Microsoft JDBC para SQL Server desde un objeto DataSource. Es posible que un servidor de aplicaciones haya encapsulado a esta clase DataSource. Para obtener acceso a la función o constante específicas del controlador JDBC, puede desencapsular el origen de datos en una interfaz ISQLServerDataSource y utilizar las funciones que se declaran en esta interfaz.
Code
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); } } }