Como usar metadados de parâmetro
Para consultar um objeto SQLServerPreparedStatement ou SQLServerCallableStatement sobre os parâmetros que eles contêm, o Microsoft JDBC Driver para SQL Server implementa a classe SQLServerParameterMetaData. Esta classe contém diversos campos e métodos que retornam informações como um único valor.
Para criar um objeto SQLServerParameterMetaData, você pode usar os métodos getParameterMetaData das classes SQLServerPreparedStatement e SQLServerCallableStatement.
No exemplo a seguir, uma conexão aberta para o banco de dados de exemplo AdventureWorks2022 é passada para a função, o método getParameterMetaData da classe SQLServerCallableStatement é usado para retornar um objeto SQLServerParameterMetaData e, em seguida, vários métodos do objeto SQLServerParameterMetaData são usados para exibir informações sobre o tipo e o modo dos parâmetros que estão contidos no procedimento armazenado de 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();
}
}
Observação
Há algumas limitações ao usar a classe SQLServerParameterMetaData com instruções preparadas.
Com o Microsoft JDBC Driver 6.0 (ou superior) para SQL Server: ao usar o SQL Server 2008 ou 2008 R2, o driver JDBC dá suporte para as instruções SELECT, DELETE, INSERT e UPDATE, uma vez que essas instruções não contêm subconsultas e/ou junções.
Consultas de mesclagem também não têm suporte para a classe SQLServerParameterMetaData ao usar o SQL Server 2008 ou 2008 R2. Para o SQL Server 2012 e metadados de parâmetro de versões anteriores com consultas complexas que têm suporte.
A recuperação dos metadados do parâmetro para colunas criptografadas não é compatível. Com o Microsoft JDBC Driver 4.1 ou 4.2 para SQL Server: o driver JDBC dá suporte para as instruções SELECIONAR, EXCLUIR, INSERIR e ATUALIZAR, uma vez que essas instruções não contêm subconsultas e/ou junções. As consultas MERGE também não são compatíveis com a classe SQLServerParameterMetaData.