Udostępnij przez


Używanie metadanych parametrów

pobierz sterownik JDBC

Aby wysłać zapytanie do obiektu SQLServerPreparedStatement lub SQLServerCallableStatement o parametrach, które zawierają, sterownik JDBC firmy Microsoft dla programu SQL Server implementuje klasę SQLServerParameterMetaData . Ta klasa zawiera wiele pól i metod, które zwracają informacje w postaci pojedynczej wartości.

Aby utworzyć obiekt SQLServerParameterMetaData, można użyć metod getParameterMetaData klas SQLServerPreparedStatement i SQLServerCallableStatement.

W poniższym przykładzie do funkcji jest przekazywane otwarte połączenie z przykładową bazą danych AdventureWorks2025. Metoda getParameterMetaData klasy SQLServerCallableStatement służy do zwracania obiektu SQLServerParameterMetaData, a następnie różne metody tego obiektu są używane do wyświetlania informacji o typie i trybie parametrów zawartych w procedurze składowanej 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();
    }
}

Uwaga / Notatka

Istnieją pewne ograniczenia dotyczące używania klasy SQLServerParameterMetaData z przygotowanymi instrukcjami.

W przypadku sterownika JDBC firmy Microsoft 6.0 (lub nowszego) dla programu SQL Server: w przypadku korzystania z programu SQL Server 2008 lub 2008 R2 sterownik JDBC obsługuje instrukcje SELECT, DELETE, INSERT i UPDATE, o ile te instrukcje nie zawierają podzapytania i/lub sprzężeń.

Zapytania MERGE nie są również obsługiwane dla klasy SQLServerParameterMetaData w przypadku korzystania z programu SQL Server 2008 lub 2008 R2. W przypadku programu SQL Server 2012 i nowszych wersji obsługiwane są metadane parametrów w złożonych zapytaniach.

Pobieranie metadanych parametrów dla zaszyfrowanych kolumn nie jest obsługiwane. W przypadku sterownika JDBC firmy Microsoft 4.1 lub 4.2 dla programu SQL Server: sterownik JDBC obsługuje instrukcje SELECT, DELETE, INSERT i UPDATE, o ile te instrukcje nie zawierają podzapytania i/lub sprzężeń. Zapytania MERGE nie są również obsługiwane dla klasy SQLServerParameterMetaData.