Compartilhar via


Como usar metadados de parâmetro

Baixar o JDBC Driver

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.