Wrappers et interfaces
Le pilote JDBC Microsoft SQL Server prend en charge les interfaces qui vous permettent de créer un proxy d'une classe, ainsi que les wrappers qui vous permettent d'accéder à des extensions de l'API JDBC spécifiques au pilote JDBC SQL Server via une interface proxy.
Wrappers
Le pilote JDBC SQL Server prend en charge l'interface java.sql.Wrapper. Cette interface fournit un mécanisme d'accès aux extensions de l'API JDBC qui sont spécifiques au pilote JDBC SQL Server via une interface proxy.
L'interface java.sql.Wrapper définit deux méthodes : isWrapperFor et unwrap. La méthode isWrapperFor vérifie si l'objet d'entrée spécifié implémente cette interface. La méthode unwrap retourne un objet qui implémente cette interface afin d'autoriser l'accès aux méthodes spécifiques du pilote JDBC SQL Server.
Les méthodes isWrapperFor et unwrap sont exposées comme suit :
- Méthode isWrapperFor (SQLServerCallableStatement)
- Méthode unwrap (SQLServerCallableStatement)
- Méthode isWrapperFor (SQLServerConnectionPoolDataSource)
- Méthode unwrap (SQLServerConnectionPoolDataSource)
- Méthode isWrapperFor (SQLServerDataSource)
- Méthode unwrap (SQLServerDataSource)
- Méthode isWrapperFor (SQLServerPreparedStatement)
- Méthode unwrap (SQLServerPreparedStatement)
- Méthode isWrapperFor (SQLServerStatement)
- Méthode unwrap (SQLServerStatement)
- Méthode isWrapperFor (SQLServerXADataSource)
- Méthode unwrap (SQLServerXADataSource)
Interfaces
À compter de la version 3.0 du pilote JDBC SQL Server, des interfaces sont disponibles pour qu'un serveur d'applications accède à une méthode spécifique du pilote à partir de la classe associée. Le serveur d'applications peut encapsuler la classe en créant un proxy, exposant la fonctionnalité spécifique du pilote JDBC SQL Server à partir d'une interface. Le pilote JDBC SQL Server prend en charge les interfaces disposant de méthodes et constantes spécifiques du pilote JDBC SQL Server, de sorte qu'un serveur d'applications peut créer un proxy de la classe.
Les interfaces dérivent d'interfaces Java standard. Par conséquent, vous pouvez utiliser le même objet une fois qu'il est désencapsulé pour accéder à la fonctionnalité spécifique du pilote ou à la fonctionnalité générique du pilote JDBC SQL Server.
Les interfaces suivantes ont été ajoutées :
- ISQLServerCallableStatement
- ISQLServerConnection
- ISQLServerDataSource
- ISQLServerPreparedStatement
- ISQLServerResultSet
- ISQLServerStatement
Exemple
Description
L'exemple suivant montre comment accéder à une fonctionnalité spécifique du pilote JDBC SQL Server à partir d'un objet DataSource. Cette classe DataSource peut avoir été encapsulée par un serveur d'applications. Pour accéder à la fonctionnalité ou constante spécifique du pilote JDBC, vous pouvez désencapsuler la source de données dans une interface ISQLServerDataSource et utiliser les fonctionnalités déclarées dans cette interface.
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);
}
}
}