若要查詢 SQLServerPreparedStatement 或 SQLServerCallableStatement 物件有關其所包含的參數,Microsoft JDBC Driver for SQL Server 會實作 SQLServerParameterMetaData 類別。 此類別包含以單一值格式傳回資訊的許多欄位與方法。
若要建立 SQLServerParameterMetaData 物件,您可以使用 SQLServerPreparedStatement 與 SQLServerCallableStatement 類別的 getParameterMetaData 方法。
以下範例中,將 AdventureWorks2025 範例資料庫的開啟連線傳遞到函式中,使用 SQLServerCallableStatement 類別的 getParameterMetaData 方法回傳 SQLServerParameterMetaData 物件,接著使用 SQLServerParameterMetaData 物件的各種方法顯示 HumanResources.uspUpdateEmployeeHireInfo 儲存程序中參數的類型與模式資訊。
public static void getParameterMetaData(Connection con) {
try(CallableStatement cstmt = con.prepareCall("{call HumanResources.uspUpdateEmployeeHireInfo(?, ?, ?, ?, ?)}");) {
ParameterMetaData pmd = cstmt.getParameterMetaData();
int count = pmd.getParameterCount();
for (int i = 1; i <= count; i++) {
System.out.println("TYPE: " + pmd.getParameterTypeName(i) + " MODE: " + pmd.getParameterMode(i));
}
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
}
}
注意
搭配備妥的陳述式使用 SQLServerParameterMetaData 類別時有一些限制。
使用 Microsoft JDBC Driver 6.0 (或更高版本) for SQL Server:使用 SQL Server 2008 或 2008 R2 時,JDBC 驅動程式支援 SELECT、DELETE、INSERT 與 UPDATE 陳述式 (只要這些陳述式不包含子查詢及/或聯結)。
使用 SQL Server 2008 或 2008 R2 時,對 SQLServerParameterMetaData 類別也不支援 MERGE 查詢。 若是 SQL Server 2012 及更高版本,則支援具備複雜查詢的參數中繼資料。
不支援擷取加密資料行的參數中繼資料。 使用 Microsoft JDBC Driver 4.1 或 4.2 for SQL Server:JDBC 驅動程式支援 SELECT、DELETE、INSERT 與 UPDATE 陳述式 (只要這些陳述式不包含子查詢及/或聯結)。 SQLServerParameterMetaData 類別也不支援 MERGE 查詢。