Uso dei metadati dei parametri
Per eseguire una query su un oggetto SQLServerPreparedStatement o SQLServerCallableStatement per recuperare i parametri in esso contenuti, il driver JDBC per SQL Server implementa la classe SQLServerParameterMetaData. Questa classe contiene numerosi campi e metodi che restituiscono informazioni in forma di singolo valore.
Per creare un oggetto SQLServerParameterMetaData, è possibile usare i metodi getParameterMetaData delle classi SQLServerPreparedStatement e SQLServerCallableStatement.
Nell'esempio seguente una connessione aperta al database di esempio AdventureWorks2022 viene passata alla funzione, viene usato il metodo getParameterMetaData della classe SQLServerCallableStatement per restituire un oggetto SQLServerParameterMetaData, quindi vengono usati vari metodi dell'oggetto SQLServerParameterMetaData per visualizzare informazioni sul tipo e sulla modalità dei parametri contenuti all'interno della stored procedure 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();
}
}
Nota
Esistono alcune limitazioni quando si usa la classe SQLServerParameterMetaData con le istruzioni preparate.
Con Microsoft JDBC Driver 6.0 (o versioni successive) per SQL Server: quando si usa SQL Server 2008 o 2008 R2, il driver JDBC supporta le istruzioni SELECT, DELETE, INSERT e UPDATE purché queste istruzioni non contengano sottoquery e/o join.
Le query MERGE inoltre non sono supportate per la classe SQLServerParameterMetaData quando si utilizza SQL Server 2008 o 2008 R2. Sono supportati per SQL Server 2012 e versioni successive i metadati del parametro con query complesse.
Il recupero dei metadati dei parametri per le colonne crittografate non è supportato. Con Microsoft JDBC Driver 4.1 o 4.2 per SQL Server: il driver JDBC supporta le istruzioni SELECT, DELETE, INSERT e UPDATE purché queste istruzioni non contengano sottoquery e/o join. Anche le query MERGE non sono supportate per la classe SQLServerParameterMetaData.