使用參數中繼資料
若要查詢 SQLServerPreparedStatement 或 SQLServerCallableStatement 物件有關其所包含的參數,Microsoft JDBC Driver for SQL Server 會實作 SQLServerParameterMetaData 類別。 此類別包含以單一值格式傳回資訊的許多欄位與方法。
若要建立 SQLServerParameterMetaData 物件,您可以使用 SQLServerPreparedStatement 與 SQLServerCallableStatement 類別的 getParameterMetaData 方法。
在下列範例中,對 AdventureWorks2022 樣本資料庫的已開啟連線會傳遞至函數中,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 查詢。