包裝函式與介面
Microsoft JDBC Driver for SQL Server 支援的介面可讓您建立類別的 Proxy,而所支援的包裝函式則可讓您透過 Proxy 介面存取 Microsoft SQL Server Microsoft JDBC Driver for SQL Server 特有的 JDBC API 延伸模組。
包裝函式
Microsoft JDBC Driver for SQL Server 支援 java.sql.Wrapper 介面。 這個介面會提供一項機制,可讓您透過 Proxy 介面存取 Microsoft JDBC Driver for SQL Server 特有的 JDBC API 延伸模組。
java.sql.Wrapper 介面會定義兩個方法:isWrapperFor 和 unwrap。 isWrapperFor 方法會檢查指定的輸入物件是否實作這個介面。 unwrap 方法會傳回實作這個介面的物件,以便允許存取 Microsoft JDBC Driver for SQL Server 特有的方法。
isWrapperFor 和 unwrap 方法會公開如下:
- isWrapperFor 方法 (SQLServerCallableStatement)
- unwrap 方法 (SQLServerCallableStatement)
- isWrapperFor 方法 (SQLServerConnectionPoolDataSource)
- unwrap 方法 (SQLServerConnectionPoolDataSource)
- isWrapperFor 方法 (SQLServerDataSource)
- unwrap 方法 (SQLServerDataSource)
- isWrapperFor 方法 (SQLServerPreparedStatement)
- unwrap 方法 (SQLServerPreparedStatement)
- isWrapperFor 方法 (SQLServerStatement)
- unwrap 方法 (SQLServerStatement)
- isWrapperFor 方法 (SQLServerXADataSource)
- unwrap 方法 (SQLServerXADataSource)
介面
從 SQL Server JDBC Driver 3.0 開始,介面可供應用程式伺服器存取相關聯類別中的驅動程式特定方法。 應用程式可以透過建立 Proxy、公開介面中的 Microsoft JDBC Driver for SQL Server 專屬功能來包裝類別。 Microsoft JDBC Driver for SQL Server 支援擁有 Microsoft JDBC Driver for SQL Server 專屬方法與常數的介面,讓應用程式伺服器可以建立類別的 Proxy。
這些介面衍生自標準的 Java 介面,讓您在物件解除包裝之後,可以使用相同的物件存取驅動程式專屬功能或一般 Microsoft JDBC Driver for SQL Server 功能。
加入以下介面:
- ISQLServerCallableStatement
- ISQLServerConnection
- ISQLServerDataSource
- ISQLServerPreparedStatement
- ISQLServerResultSet
- ISQLServerStatement
範例
描述
此範例示範如何從 DataSource 物件存取 Microsoft JDBC Driver for SQL Server 特定函數。 此 DataSource 類別可能已經由應用程式伺服器包裝。 若要存取 JDBC 驅動程式特定函式或常數,您可以解除包裝資料來源成為 SQLServerDataSource 介面,然後使用此介面中宣告的函式。
程式碼
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);
}
}
}