Wrapper und Schnittstellen
Microsoft JDBC-Treiber für SQL Server unterstützt Schnittstellen, mit denen Sie einen Proxy einer Klasse erstellen können, sowie Wrapper, die Ihnen über eine Proxyschnittstelle den Zugriff auf Erweiterungen der für Microsoft JDBC-Treiber für SQL Server spezifischen JDBC-API ermöglichen.
Wrapper
Microsoft JDBC-Treiber für SQL Server unterstützt die java.sql.Wrapper-Schnittstelle. Diese Schnittstelle bietet einen Mechanismus für den Zugriff auf Erweiterungen der für Microsoft JDBC-Treiber für SQL Server spezifischen JDBC-API über eine Proxyschnittstelle.
Die java.sql.Wrapper-Schnittstelle definiert zwei Methoden: isWrapperFor und unwrap. Mit der Methode isWrapperFor wird überprüft, ob das angegebene Eingabeobjekt diese Schnittstelle implementiert. Die Methodeunwrap gibt ein Objekt zurück, das diese Schnittstelle implementiert, um den Zugriff auf die für Microsoft JDBC-Treiber für SQL Server spezifischen Methoden zu ermöglichen.
Die Methoden isWrapperFor und unwrap werden wie folgt bereitgestellt:
- isWrapperFor-Methode (SQLServerCallableStatement)
- unwrap-Methode (SQLServerCallableStatement)
- isWrapperFor-Methode (SQLServerConnectionPoolDataSource)
- unwrap-Methode (SQLServerConnectionPoolDataSource)
- isWrapperFor-Methode (SQLServerDataSource)
- unwrap-Methode (SQLServerDataSource)
- isWrapperFor-Methode (SQLServerPreparedStatement)
- unwrap-Methode (SQLServerPreparedStatement)
- isWrapperFor-Methode (SQLServerStatement)
- unwrap-Methode (SQLServerStatement)
- isWrapperFor-Methode (SQLServerXADataSource)
- unwrap-Methode (SQLServerXADataSource)
Schnittstellen
Ab SQL Server JDBC-Treiber 3.0 stehen einem Anwendungsserver Schnittstellen für den Zugriff auf eine treiberspezifische Methode über die zugehörige Klasse zur Verfügung. Der Anwendungsserver kann die Klasse durch Erstellen eines Proxy umschließen, wodurch die Microsoft JDBC-Treiber für SQL Server-spezifischen Funktionen über eine Schnittstelle verfügbar gemacht werden. Microsoft JDBC-Treiber für SQL Server unterstützt Schnittstellen, die über die Microsoft JDBC-Treiber für SQL Server-spezifischen Methoden und Konstanten verfügen, sodass ein Anwendungsserver einen Proxy der Klasse erstellen kann.
Die Schnittstellen sind von Java-Standardschnittstellen abgeleitet, damit Sie dasselbe Objekt nach dem Entpacken für den Zugriff auf treiberspezifische Funktionen oder generische Microsoft JDBC-Treiber für SQL Server-Funktionen verwenden können.
Die folgenden Schnittstellen wurden hinzugefügt:
- ISQLServerCallableStatement
- ISQLServerConnection
- ISQLServerDataSource
- ISQLServerPreparedStatement
- ISQLServerResultSet
- ISQLServerStatement
Beispiel
BESCHREIBUNG
In diesem Beispiel wird veranschaulicht, wie der Zugriff auf eine Microsoft JDBC-Treiber für SQL Server-spezifische Funktion über ein DataSource-Objekt erfolgt. Die Klasse „DataSource“ wurde möglicherweise von einem Anwendungsserver umschlossen. Für den Zugriff auf die JDBC-Treiber-spezifische Funktion oder Konstante können Sie die Datenquelle in eine ISQLServerDataSource-Schnittstelle entpacken und die darin deklarierten Funktionen verwenden.
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);
}
}
}