Использование метаданных параметров
Для выполнения запроса к объекту SQLServerPreparedStatement или SQLServerCallableStatement относительно параметров, которые они содержат, драйвер Microsoft JDBC для SQL Server реализует класс SQLServerParameterMetaData. Этот класс содержит многочисленные поля и методы, которые возвращают сведения в виде одного значения.
Чтобы создать объект SQLServerParameterMetaData, можно использовать методы getParameterMetaData классов SQLServerPreparedStatement и SQLServerCallableStatement.
В следующем примере открытое подключение к образцу базы данных AdventureWorks2022 передается в функцию. Метод getParameterMetaData класса SQLServerCallableStatement используется для возврата объекта 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 for SQL Server 6.0 (или более поздней версии): при использовании SQL Server 2008 или 2008 R2 драйвер JDBC поддерживает инструкции SELECT, DELETE, INSERT и UPDATE при условии, что они не содержат вложенные запросы или соединения.
Запросы MERGE также не поддерживаются для класса SQLServerParameterMetaData при использовании SQL Server 2008 или 2008 R2. Для SQL Server 2012 и более поздних версий поддерживаются метаданные параметров со сложными запросами.
Получение метаданных параметров для зашифрованных столбцов не поддерживается. Для Microsoft JDBC Driver for SQL Server 4.1 или 4.2: драйвер JDBC поддерживает инструкции SELECT, DELETE, INSERT и UPDATE при условии, что они не содержат вложенные запросы или соединения. Запросы MERGE также не поддерживаются для класса SQLServerParameterMetaData.