Récupération de métadonnées dans un ensemble de données dbExpress

De RAD Studio
Aller à : navigation, rechercher

Remonter à Accès aux informations de schéma dbExpress


Pour remplir un ensemble de données unidirectionnel avec des métadonnées du serveur de base de données, vous devez d'abord indiquer quelles sont les données que vous voulez, en utilisant la méthode SetSchemaInfo. SetSchemaInfo accepte trois paramètres :

  • Le type d'information de schéma (métadonnées) que vous voulez lire. Cela peut être une liste de tables (stTables), une liste de tables système (stSysTables), une liste de procédures stockées (stProcedures), une liste de champs dans une table (stColumns), une liste d'index (stIndexes) ou la liste des paramètres utilisés par une procédure stockée (stProcedureParams). Chaque type d'information utilise un ensemble de champs spécifique pour décrire les éléments de la liste. Pour plus de détails sur les structures de ces ensembles de données, voir La structure des ensembles de métadonnées.
  • Si vous recherchez des informations sur des champs des index ou les paramètres d'une procédure stockée, le nom de la table ou de la procédure stockée auxquels elles s'appliquent. Si vous recherchez n'importe quel autre type d'informations de schéma, ce paramètre est nil.
  • Un modèle à respecter pour chaque nom renvoyé. Ce modèle est un modèle SQL, comme ‘Cust%', qui utilise les jokers ‘%’ (correspondant à une chaîne de n'importe quels caractères et de n'importe quelle longueur) et ‘_’ (correspondant à un seul caractère quelconque). Pour utiliser un pourcentage ou un souligné dans un modèle pour sa valeur normale, doublez le caractère (%% ou __). Si vous ne voulez pas utiliser de modèle, ce paramètre peut être nil.

Si vous lisez des informations de schéma concernant les tables (stTables), les informations de schéma résultantes peuvent décrire les tables ordinaires, les tables système, les vues et/ou les synonymes, selon la valeur de la propriété TableScope de la connexion SQL.

L'appel suivant demande une table listant toutes les tables système (les tables du serveur qui contiennent des métadonnées) :

SQLDataSet1.SetSchemaInfo(stSysTable, "", "");
SQLDataSet1->SetSchemaInfo(stSysTable, "", "");

Lorsque vous ouvrez l'ensemble de données après cet appel de SetSchemaInfo, il possède un enregistrement pour chaque table, dont les colonnes fournissent le nom de table, le type, le nom de schéma, etc. Si le serveur n'utilise pas de tables système pour stocker les métadonnées (par exemple MySQL), l'ensemble de données ne contient aucun enregistrement lorsque vous l'ouvrez.

L'exemple précédent n'utilisait que le premier paramètre. Supposons que vous vouliez obtenir la liste des paramètres utilisés en entrée de la procédure stockée nommée 'MyProc'. Supposons également que la personne ayant écrit cette procédure se soit servie d'un préfixe dans le nom de tous les paramètres pour indiquer s'il s'agit d'un paramètre en entrée ou en sortie ('inName', 'outValue', etc.). Vous pourriez appeler SetSchemaInfo comme suit :

SQLDataSet1.SetSchemaInfo(stProcedureParams, "MyProc", "in%");
SQLDataSet1->SetSchemaInfo(stProcedureParams, "MyProc", "in%");

L'ensemble de données résultant est une table de paramètres d'entrée dont les colonnes décrivent les propriétés de chaque paramètre.

Lecture des données après l'utilisation de l'ensemble de données pour des métadonnées

Après un appel à SetSchemaInfo, il y a deux façons de revenir à l'exécution des requêtes ou des procédures stockées avec l'ensemble de données :

  • Changez la propriété CommandText, en spécifiant la requête, la table ou la procédure stockée à partir de laquelle vous voulez lire des données.
  • Appelez SetSchemaInfo, en définissant le premier paramètre par stNoSchema. Dans ce cas, l'ensemble de données se remet à lire les données spécifiées par la valeur en cours de CommandText.

Voir aussi