Cet article a fait l’objet d’une traduction automatique. Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez également afficher le texte anglais dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte traduit.
Traduction
Anglais

DbDataAdapter.FillSchema méthode (DataTable, SchemaType)

 

Date de publication : novembre 2016

Configure le schéma du DataTable spécifié en fonction du SchemaType spécifié.

Espace de noms:   System.Data.Common
Assembly:  System.Data (dans System.Data.dll)

public DataTable FillSchema(
	DataTable dataTable,
	SchemaType schemaType
)

Paramètres

dataTable
Type: System.Data.DataTable

DataTable à remplir avec le schéma à partir de la source de données.

schemaType
Type: System.Data.SchemaType

Une des valeurs de SchemaType.

Valeur de retour

Type: System.Data.DataTable

DataTable qui contient les informations de schéma retournées par la source de données.

Le FillSchema méthode récupère le schéma de la source de données à l’aide du SelectCommand. L’objet de connexion associé à le SelectCommand doit être valide, mais il ne doit pas être ouvert. Si la connexion est fermée avant FillSchema est appelée, elle est ouverte pour récupérer les données, puis fermé. Si la connexion est ouverte avant FillSchema est appelée, elle reste ouverte.

Un FillSchema opération retourne un DataTable. Il ajoute ensuite des colonnes pour la DataColumnCollection de la DataTable, et configure les éléments suivants DataColumn Propriétés si elles existent dans la source de données :

FillSchema configure également les PrimaryKey et Constraints propriétés selon les règles suivantes :

  • Si un PrimaryKey a déjà été défini pour le DataTable, ou DataTable contient des données, le PrimaryKey propriété ne sera pas définie.

  • Si une ou plusieurs colonnes de clés primaires sont retournées par le SelectCommand, elles sont utilisées comme colonnes de clé primaire pour le DataTable.

  • Si aucune colonne clé primaire n’est renvoyées, mais sont des colonnes uniques, les colonnes uniques sont utilisées comme clé primaire si et uniquement si toutes les colonnes uniques sont non null. Si une des colonnes est nullable, un UniqueConstraint est ajouté à la ConstraintCollection, mais le PrimaryKey propriété n’est pas définie.

  • Si les colonnes clés primaires et des colonnes uniques sont retournées, les colonnes clés primaires sont utilisés en tant que colonnes de clé primaire pour le DataTable.

Notez que les clés primaires et des contraintes uniques sont ajoutés à la ConstraintCollection selon les règles précédentes, mais les autres contraintes types ne sont pas ajoutés. Ce processus peut exiger plusieurs allers-retours au serveur.

Si un cluster unique index est défini sur une ou plusieurs colonnes dans une table SQL Server et la contrainte primary key est définie sur un autre ensemble de colonnes, les noms des colonnes de l’index cluster seront retourné. Pour retourner l’ou les noms des colonnes de clé primaire, utilisez un indicateur de requête avec l’instruction SELECT qui spécifie le nom de l’index de clé primaire. Pour plus d’informations sur la spécification des indicateurs de requête, consultez Query Hint (Transact-SQL).

Si le DbDataAdapter rencontre des colonnes dupliquées lors du remplissage d’un DataTable, il génère des noms pour les colonnes suivantes, à l’aide du modèle «columnname1 », «columnname2 «, »columnname3 », et ainsi de suite. Si les données entrantes contiennent des colonnes sans nom, ils sont placés dans le DataSet selon le modèle « Column1 », « Column2 » et ainsi de suite. Lorsque plusieurs jeux de résultats est ajoutés à la DataSet chaque jeu de résultats est placé dans une table distincte. Jeux de résultats supplémentaires sont nommés en ajoutant des valeurs intégrales au nom de table spécifié (par exemple, « Table », « Table1 », « Table2 » et ainsi de suite.). Applications à l’aide des noms de colonne et de table doivent garantir que tout conflit avec ces modèles d’affectation de noms ne se produit pas.

FillSchema ne pas retourner toutes les lignes. Utilisez le Fill pour ajouter des lignes à un DataTable.

System_CAPS_noteRemarque

Lors du traitement des instructions SQL par lots qui retournent plusieurs résultats, l’implémentation de FillSchema pour le fournisseur de données .NET Framework pour OLE DB récupère les informations de schéma pour seulement le premier résultat. Pour récupérer les informations de schéma pour plusieurs résultats, utilisez Fill avec la MissingSchemaAction la valeur AddWithKey.

Lorsque vous utilisez FillSchema, le fournisseur de données .NET Framework pour SQL Server ajoute une clause FOR BROWSE à l’instruction en cours d’exécution. L’utilisateur doit être conscient des effets secondaires potentiels, tels que les interférences avec l’utilisation d’instructions SET FMTONLY ON. Pour plus d’informations, consultez la documentation en ligne de SQL Server.

L’exemple suivant utilise la classe dérivée, SqlDataAdapter, pour remplir un DataSet avec le schéma et retourne un DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}

.NET Framework
Disponible depuis 1.1
Retour au début
Afficher: