OdbcDataReader.GetSchemaTable Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Retourne une DataTable valeur qui décrit les métadonnées de colonne du OdbcDataReader.
public:
virtual System::Data::DataTable ^ GetSchemaTable();
public:
override System::Data::DataTable ^ GetSchemaTable();
public System.Data.DataTable GetSchemaTable();
public override System.Data.DataTable GetSchemaTable();
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Function GetSchemaTable () As DataTable
Public Overrides Function GetSchemaTable () As DataTable
Retours
Qui DataTable décrit les métadonnées de colonne.
Implémente
Exceptions
La OdbcDataReader fermeture est terminée.
Remarques
La GetSchemaTable méthode retourne des métadonnées sur chaque colonne dans l’ordre suivant :
| Colonne DataReader | Description |
|---|---|
| ColumnName | Nom de la colonne ; cela peut ne pas être unique. Si le nom de colonne ne peut pas être déterminé, une valeur Null est retournée. Ce nom reflète toujours le nom le plus récent de la colonne dans l’affichage actuel ou le texte de la commande. |
| ColumnOrdinal | Ordinal de base zéro de la colonne. Cette colonne ne peut pas contenir de valeur Null. |
| TailleDeColonne | Longueur maximale possible d’une valeur dans la colonne. Pour les colonnes qui utilisent un type de données de longueur fixe, il s’agit de la taille du type de données. |
| NumericPrecision | S’il DbType s’agit d’un type de données numérique, il s’agit de la précision maximale de la colonne. La précision dépend de la définition de la colonne. Si DbType ce n’est pas un type de données numérique, n’utilisez pas les données de cette colonne. Si le pilote ODBC sous-jacent retourne une valeur de précision pour un type de données non numérique, cette valeur est utilisée dans la table de schémas. |
| NumericScale | Si DbType c’est Decimalle cas, nombre de chiffres à droite de la virgule décimale. Sinon, il s’agit d’une valeur Null. Si le pilote ODBC sous-jacent retourne une valeur de précision pour un type de données non numérique, cette valeur est utilisée dans la table de schémas. |
| Type de données | Mappe au type common language runtime de DbType. |
| ProviderType | Type de pilote sous-jacent. |
| IsLong |
true si la colonne contient un objet blob (Binary Long Object) qui contient des données très longues. La définition de données très longues est spécifique au pilote. |
| AllowDBNull |
true si le consommateur peut définir la colonne sur une valeur Null ou si le pilote ne peut pas déterminer si le consommateur peut définir la colonne sur une valeur Null. Sinon, false. Une colonne peut contenir des valeurs Null, même si elle ne peut pas être définie sur une valeur Null. |
| IsReadOnly |
true si la colonne ne peut pas être modifiée ; sinon false. |
| IsRowVersion | Définissez si la colonne contient un identificateur de ligne persistant qui ne peut pas être écrit et n’a aucune valeur significative à l’exception de l’identité de la ligne. |
| IsUnique |
true: aucune ligne de la table de base (la table retournée dans BaseTableName) ne peut avoir la même valeur dans cette colonne. IsUnique est garanti true si la colonne représente une clé par elle-même ou s’il existe une contrainte de type UNIQUE qui s’applique uniquement à cette colonne.false: la colonne peut contenir des valeurs en double dans la table de base. La valeur par défaut de cette colonne est false. |
| IsKey |
true: la colonne est l’un des ensembles de colonnes de l’ensemble de lignes qui, ensemble, identifient de manière unique la ligne. L’ensemble de colonnes avec IsKey doit true identifier de manière unique une ligne dans l’ensemble de lignes. Il n’est pas nécessaire que cet ensemble de colonnes soit un ensemble minimal de colonnes. Cet ensemble de colonnes peut être généré à partir d’une clé primaire de table de base, d’une contrainte unique ou d’un index unique.false: la colonne n’est pas nécessaire pour identifier de manière unique la ligne. |
| IsAutoIncrement |
true si la colonne affecte des valeurs à de nouvelles lignes par incréments fixes ; sinon false. La valeur par défaut de cette colonne est false. |
| BaseSchemaName | Nom du schéma dans la source de données qui contient la colonne. NULL si le nom du catalogue de base ne peut pas être déterminé. La valeur par défaut de cette colonne est une valeur Null. |
| BaseCatalogName | Nom du catalogue dans le magasin de données qui contient la colonne. NULL si le nom du catalogue de base ne peut pas être déterminé. La valeur par défaut de cette colonne est une valeur Null. |
| BaseTableName | Nom de la table ou de la vue dans le magasin de données qui contient la colonne. Valeur Null si le nom de la table de base ne peut pas être déterminé. La valeur par défaut de cette colonne est une valeur Null. |
| BaseColumnName | Nom de la colonne dans le magasin de données. Cela peut être différent du nom de colonne retourné dans la colonne ColumnName si un alias a été utilisé. Valeur Null si le nom de colonne de base ne peut pas être déterminé ou si la colonne d’ensemble de lignes est dérivée, mais pas identique à celle d’une colonne dans le magasin de données. La valeur par défaut de cette colonne est une valeur Null. |
Une ligne est retournée pour chaque colonne du jeu de résultats.
Le Fournisseur de données .NET Framework pour ODBC suppose que les informations de métadonnées sont disponibles à partir d’un pilote ODBC après l’une des fonctions SQLPrepare, SQLExecute ou SQLExecuteDirect sont appelées. Pour que le comportement de commande « SchemaOnly » fonctionne correctement, SQLPrepare doit retourner les informations de métadonnées requises. Tous les pilotes ODBC ne prennent pas en charge cette fonction ou retournent des informations de métadonnées. Dans ces cas, une partie ou toutes les informations contenues dans schemaTable sont manquantes. Après avoir appelé SQLPrepare, le fournisseur de données appelle la fonction ODBC SQLColAttribute pour rechercher les informations de métadonnées relatives à chaque colonne dans les résultats de la requête (par exemple, IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Si le pilote sous-jacent ne retourne pas certaines de ces informations, les valeurs correspondantes dans schemaTable ne sont pas définies correctement.
Le Fournisseur de données .NET Framework pour ODBC appelle également SQLPrimaryKeys pour récupérer les informations de clé pour chaque table. Si le pilote ODBC sous-jacent ne prend pas en charge cette fonction, le fournisseur de données appelle SQLStatistics et choisit l’un des index uniques comme clé primaire de la table. Cela peut ne pas toujours donner les résultats souhaités.
OdbcCommandBuilder nécessite l’identification correcte des clés primaires de la table afin de fonctionner correctement. Si baseTableName n’est pas retourné pour chaque colonne des résultats de la requête, le .NET Framework Fournisseur de données pour ODBC tente d’analyser l’instruction SQL pour rechercher les noms de tables impliqués dans la requête. Cela fonctionne avec les instructions UPDATE, INSERT, DELETE et SELECT simples, mais pas avec des procédures stockées ou des instructions SELECT basées sur des jointures. Si certaines ou toutes les informations de schéma sont manquantes dans cette table, elles OdbcCommandBuilder ne fonctionnent pas correctement, car elles ne disposent pas d’informations de schéma insuffisantes pour générer automatiquement les instructions INSERT, UPDATE ou DELETE correctes.
Pour vous assurer que les colonnes de métadonnées retournent les informations correctes, vous devez appeler ExecuteReader avec le paramètre de comportement défini sur KeyInfo. Sinon, certaines des colonnes de la table de schéma peuvent retourner des données par défaut, null ou incorrectes.
Lorsque vous utilisez ODBC.NET pour Oracle via le pilote ODBC, les colonnes de clés alias ne sont pas reconnues comme clés. Cela affecte les colonnes IsKey et IsUnique dans la table de schéma de OdbcDataReader. Elle affecte également la capacité d’OdbcCommandBuilder à générer une logique de mise à jour. Envisagez de ne pas utiliser d’alias pour une colonne de clé primaire.
Note
Le pilote MICROSOFT Jet ODBC retourne toujours des colonnes d’index et de clés primaires uniques comme nullables, qu’elles soient nullables ou non. Le pilote ne retourne pas non plus d’informations sur la clé primaire ; elle retourne uniquement une liste d’index uniques et de leurs colonnes, y compris les colonnes clés primaires, sans les différencier.