Utilisation des métadonnées de paramètre

Télécharger le pilote JDBC

Pour interroger un objet SQLServerPreparedStatement ou SQLServerCallableStatement sur les paramètres qu'il contient, le pilote Microsoft JDBC pour SQL Server implémente la classe SQLServerParameterMetaDat. Cette classe contient plusieurs champs et méthodes qui retournent des informations sous la forme d'une valeur unique.

Pour créer un objet SQLServerParameterMetaData, vous pouvez utiliser les méthodes getParameterMetaData des classes SQLServerPreparedStatement et SQLServerCallableStatement.

Dans l’exemple suivant, une connexion ouverte à l’exemple de base de données AdventureWorks2022 est passée à la fonction, la méthode getParameterMetaData de la classe SQLServerCallableStatement est utilisée pour retourner un objet SQLServerParameterMetaData, puis diverses méthodes de l’objet SQLServerParameterMetaData sont utilisées pour afficher des informations sur le type et le mode des paramètres contenus dans la procédure stockée 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();
    }
}

Notes

Certaines contraintes s'appliquent lors de l'utilisation de la classe SQLServerParameterMetaData avec des instructions préparées.

Avec Microsoft JDBC Driver 6.0 (ou version ultérieure) pour SQL Server : Quand vous utilisez SQL Server 2008 ou 2008 R2, le pilote JDBC prend en charge les instructions SELECT, DELETE, INSERT et UPDATE tant que ces instructions ne contiennent pas de sous-requêtes et/ou de jointures.

Les requêtes MERGE ne sont pas non plus prises en charge pour la classe SQLServerParameterMetaData lors de l’utilisation de SQL Server 2008 ou 2008 R2. Pour SQL Server 2012 et versions ultérieures, les métadonnées de paramètres avec des requêtes complexes sont prises en charge.

La récupération de métadonnées de paramètres pour les colonnes chiffrées n’est pas prise en charge. Avec Microsoft JDBC Driver 4.1 ou 4.2 pour SQL Server : Le pilote JDBC prend en charge les instructions SELECT, DELETE, INSERT et UPDATE tant que ces instructions ne contiennent pas de sous-requêtes et/ou de jointures. Les requêtes MERGE ne sont pas non plus prises en charge pour la classe SQLServerParameterMetaData.