Dela via


Använda parametermetadata

Ladda ned JDBC-drivrutin

Om du vill fråga ett SQLServerPreparedStatement eller ett SQLServerCallableStatement-objekt om de parametrar som de innehåller implementerar Microsoft JDBC-drivrutinen för SQL Server klassen SQLServerParameterMetaData . Den här klassen innehåller flera fält och metoder som returnerar information i form av ett enda värde.

Om du vill skapa ett SQLServerParameterMetaData-objekt kan du använda getParameterMetaData-metoderna för klasserna SQLServerPreparedStatement och SQLServerCallableStatement.

I följande exempel en öppen anslutning till AdventureWorks2025-exempeldatabasen skickas till funktionen, metoden getParameterMetaData för klassen SQLServerCallableStatement används för att returnera ett SQLServerParameterMetaData-objekt, och sedan används olika metoder för SQLServerParameterMetaData-objektet för att visa information om typen och läget för parametrarna som finns i den lagrade proceduren 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();
    }
}

Anmärkning

Det finns vissa begränsningar när du använder klassen SQLServerParameterMetaData med förberedda instruktioner.

Med Microsoft JDBC Driver 6.0 (eller senare) för SQL Server: När du använder SQL Server 2008 eller 2008 R2 stöder JDBC-drivrutinen SELECT-, DELETE-, INSERT- och UPDATE-instruktioner så länge dessa instruktioner inte innehåller underfrågor och/eller kopplingar.

MERGE-frågor stöds inte heller för KLASSEN SQLServerParameterMetaData när du använder SQL Server 2008 eller 2008 R2. För SQL Server 2012 och högre versioner stöds parametermetadata med komplexa frågor.

Hämtning av parametermetadata för krypterade kolumner stöds inte. Med Microsoft JDBC Driver 4.1 eller 4.2 för SQL Server: JDBC-drivrutinen stöder SELECT-, DELETE-, INSERT- och UPDATE-instruktioner så länge dessa instruktioner inte innehåller underfrågor och/eller kopplingar. MERGE-frågor stöds inte heller för klassen SQLServerParameterMetaData.