共用方式為


使用參數中繼資料

下載 JDBC 驅動程式

若要查詢 SQLServerPreparedStatementSQLServerCallableStatement 物件有關其所包含的參數,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 查詢。