Wrapper und Schnittstellen

Microsoft SQL Server JDBC Driver unterstützt Schnittstellen, mit denen Sie einen Proxy einer Klasse erstellen können, und Wrapper, die Ihnen über eine Proxy-Schnittstelle den Zugriff auf Erweiterungen der für SQL Server JDBC Driver spezifischen JDBC-API über eine Proxyschnittstelle ermöglichen.

Wrapper

SQL Server JDBC Driver unterstützt die java.sql.Wrapper-Schnittstelle. Diese Schnittstelle bietet einen Mechanismus für den Zugriff auf Erweiterungen der für SQL Server SQL Server JDBC Driver spezifischen JDBC-API über eine Proxyschnittstelle.

In der java.sql.Wrapper-Schnittstelle sind zwei Methoden definiert: isWrapperFor und unwrap. Mit der isWrapperFor-Methode wird überprüft, ob das angegebene Eingabeobjekt diese Schnittstelle implementiert. Die unwrap-Methode gibt ein Objekt zurück, das diese Schnittstelle implementiert, um den Zugriff auf die für SQL Server JDBC Driver spezifischen Methoden zu ermöglichen.

isWrapperFor und unwrap-Methoden werden folgendermaßen verfügbar gemacht.

Schnittstellen

In SQL Server JDBC Driver 3.0 beginnend, stehen die Schnittstelle einem Anwendungsserver für den Zugriff auf eine treiberspezifische Methode über die zugehörige Klasse zur Verfügung. Der Anwendungsserver kann die Klasse durch Erstellung eines Proxy umschließen, wodurch die SQL Server JDBC-Treiber-spezifische Funktion über eine Schnittstelle verfügbar gemacht wird. Der SQL Server JDBC-Treiber unterstützt Schnittstellen, die über die SQL Server JDBC-Treiber-spezifischen Methoden und Konstanten verfügen, sodass ein Anwendungsserver einen Proxy der Klasse erstellen kann.

Die Schnittstellen werden aus Java-Standardschnittstellen abgeleitet, damit Sie nach dem Entpacken dasselbe Objekt für den Zugriff auf die treiberspezifische Funktion oder die generische SQL Server JDBC-Treiber-Funktion verwenden können.

Die folgenden Schnittstellen wurden hinzugefügt:

Beispiel

Beschreibung

Dieses Beispiel demonstriert, wie der Zugriff auf eine SQL Server JDBC Driver-spezifische Funktion über ein DataSource-Objekt erfolgt. Diese DataSource-Klasse 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);
      }
   }
}

Siehe auch

Weitere Ressourcen

Grundlegendes zu den Datentypen in JDBC Driver