Wrapper e interfacce
Microsoft JDBC Driver per SQL Server supporta interfacce che consentono di creare un proxy di una classe e i wrapper che consentono di accedere alle estensioni dell'API JDBC specifiche di Microsoft JDBC Driver per SQL Server tramite un'interfaccia proxy.
Wrapper
Microsoft JDBC Driver per SQL Server supporta l'interfaccia java.sql.Wrapper. Tale interfaccia fornisce un meccanismo per accedere alle estensioni dell'API JDBC specifiche di Microsoft JDBC Driver per SQL Server tramite un'interfaccia proxy.
L'interfaccia java.sql.Wrapper definisce due metodi: isWrapperFor e unwrap. Il metodo isWrapperFor verifica se l'oggetto di input specificato implementa questa interfaccia. Il metodo unwrap restituisce un oggetto che implementa questa interfaccia per consentire l'accesso ai metodi specifici per Microsoft JDBC Driver per SQL Server.
I metodi isWrapperFor e unwrap sono esposti come segue:
- Metodo isWrapperFor (SQLServerCallableStatement)
- Metodo unwrap (SQLServerCallableStatement)
- Metodo isWrapperFor (SQLServerConnectionPoolDataSource)
- Metodo unwrap (SQLServerConnectionPoolDataSource)
- Metodo isWrapperFor (SQLServerDataSource)
- Metodo unwrap (SQLServerDataSource)
- Metodo isWrapperFor (SQLServerPreparedStatement)
- Metodo unwrap (SQLServerPreparedStatement)
- Metodo isWrapperFor (SQLServerStatement)
- Metodo unwrap (SQLServerStatement)
- Metodo isWrapperFor (SQLServerXADataSource)
- Metodo unwrap (SQLServerXADataSource)
Interfacce
A partire dal driver JDBC 3.0 per SQL Server, sono disponibili interfacce che consentono a un server applicazioni di accedere a un metodo specifico del driver dalla classe associata. Il wrapping della classe può essere eseguito dal server applicazioni tramite la creazione di un proxy, esponendo la funzionalità specifica di Microsoft JDBC Driver per SQL Server da un'interfaccia. Microsoft JDBC Driver per SQL Server supporta interfacce che includono costanti e metodi specifici di Microsoft JDBC Driver per SQL Server in modo che un server applicazioni possa creare un proxy della classe.
Le interfacce derivano da interfacce Java standard ed è dunque possibile usare lo stesso oggetto dopo l'annullamento del wrapping per accedere alla funzionalità specifica del driver o alla funzionalità generica di Microsoft JDBC Driver per SQL Server.
Sono aggiunte le interfacce seguenti:
- ISQLServerCallableStatement
- ISQLServerConnection
- ISQLServerDataSource
- ISQLServerPreparedStatement
- ISQLServerResultSet
- ISQLServerStatement
Esempio
Descrizione
Questo esempio illustra come accedere a una funzione specifica di Microsoft JDBC Driver per SQL Server da un oggetto DataSource. Il wrapping della classe DataSource potrebbe essere stato eseguito da un server applicazioni. Per accedere alla costante o alla funzione specifica del driver JDBC è possibile annullare il wrapping dall'origine dei dati a un'interfaccia ISQLServerDataSource e utilizzare le funzioni dichiarate in questa interfaccia.
Codice
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);
}
}
}