Microsoft SQL Server JDBC Driver 支持允许您创建类的代理的接口,并且支持允许您访问对 JDBC API 的扩展(特定于通过代理接口的 SQL Server JDBC 驱动程序)的包装。

包装

SQL Server JDBC 驱动程序支持 java.sql.Wrapper 接口。该接口提供一种机制,通过代理接口访问特定于 SQL Server JDBC 驱动程序的 JDBC API 扩展。

java.sql.Wrapper 接口定义两个方法:isWrapperForunwrapisWrapperFor 方法检查指定的输入对象是否实现此接口。unwrap 方法返回一个实现此接口的对象,从而允许访问特定于 SQL Server JDBC 驱动程序的方法。

isWrapperForunwrap 方法按如下所示公开:

接口

从 SQL Server JDBC Driver 3.0 开始,接口可用于应用程序服务器,以便从关联的类访问驱动程序特定的方法。应用程序服务器通过创建代理对类进行包装,并且从接口公开 SQL Server JDBC 驱动程序特定的函数。SQL Server JDBC 驱动程序支持具有 SQL Server JDBC 驱动程序特定的方法和常量的接口,因此应用程序服务器可以创建类的代理。

这些接口从标准 Java 接口派生,这样,一旦取消对接口的包装以便访问驱动程序特定的功能或一般 SQL Server JDBC 驱动程序功能时,您可以使用相同的对象。

新增了以下接口:

示例

说明

此示例说明如何从 DataSource 对象访问 SQL Server JDBC 驱动程序特定的函数。此 DataSource 类可能已由应用程序服务器包装。若要访问 JDBC 驱动程序特定的函数或常量,您可以取消数据源对 ISQLServerDataSource 接口的数据源的包装,并且使用在此接口中声明的函数。

代码

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);
      }
   }
}

请参阅

了解 JDBC 驱动程序数据类型