DbDataAdapter.FillSchema Méthode

Définition

Ajoute DataTable à DataSet et configure le schéma pour qu'il corresponde à celui de la source de données.

Surcharges

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Ajoute un DataTable au DataSet spécifié et configure le schéma pour qu'il corresponde à celui de la source de données en se basant sur le SchemaType défini.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Configure le schéma du DataTable spécifié en fonction du SchemaType, de la chaîne de commande et des valeurs CommandBehavior définis.

FillSchema(DataSet, SchemaType, String)

Ajoute un DataTable au DataSet spécifié et configure le schéma pour qu'il corresponde à celui de la source de données en se basant sur les SchemaType et DataTable définis.

FillSchema(DataTable, SchemaType)

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

FillSchema(DataSet, SchemaType)

Ajoute un DataTable appelé "Table" au DataSet spécifié et configure le schéma pour qu'il corresponde à celui de la source de données en se basant sur le SchemaType spécifié.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Ajoute un DataTable au DataSet spécifié et configure le schéma pour qu'il corresponde à celui de la source de données en se basant sur le SchemaType défini.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

Paramètres

dataSet
DataSet

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

schemaType
SchemaType

Une des valeurs de l'objet SchemaType.

command
IDbCommand

Instruction SQL SELECT utilisée pour récupérer des lignes de la source de données.

srcTable
String

Le nom de la table source à utiliser pour le mappage de table.

behavior
CommandBehavior

Une des valeurs de l'objet CommandBehavior.

Retours

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

Remarques

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

Une FillSchema opération ajoute un DataTable à la destination DataSet. Il ajoute ensuite des colonnes au DataColumnCollection de DataTableet configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :

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

  • Si une ou plusieurs colonnes de clé primaire sont retournées par , SelectCommandelles sont utilisées comme colonnes de clé primaire pour .DataTable

  • Si aucune colonne clé primaire n’est retournée, mais que des colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas nuls. Si l’une des colonnes peut avoir la valeur Null, un UniqueConstraint est ajouté à , ConstraintCollectionmais la PrimaryKey propriété n’est pas définie.

  • Si les colonnes de clé primaire et les colonnes uniques sont retournées, les colonnes de clé primaire sont utilisées comme colonnes de clé primaire pour .DataTable

Notez que les clés primaires et les contraintes uniques sont ajoutées à en ConstraintCollection fonction des règles précédentes, mais que d’autres types de contraintes ne sont pas ajoutés.

Si un index cluster unique est défini sur une ou plusieurs colonnes d’une table SQL Server et que la contrainte de clé primaire est définie sur un ensemble distinct de colonnes, les noms des colonnes de l’index cluster sont retournés. Pour renvoyer le 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 Indicateurs (Transact-SQL) - Requête.

Si le IDataAdapter rencontre des colonnes en double lors du remplissage d’un DataTable, il génère des noms pour les colonnes suivantes, à l’aide du modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées dans le DataSet en fonction du modèle « Column1 », « Column2 », etc. Lorsque plusieurs jeux de résultats sont ajoutés au DataSet jeu de résultats, chaque jeu de résultats est placé dans une table distincte. D’autres jeux de résultats sont nommés en ajoutant des valeurs intégrales au nom de table spécifié (par exemple, « Table », « Table1 », « Table2 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’existe aucun conflit avec ces modèles d’affectation de noms.

La FillSchema méthode prend en charge les scénarios où contient plusieurs DataTable objets dont les DataSet noms diffèrent uniquement par la casse. Dans de telles situations, FillSchema effectue une comparaison respectant la casse pour rechercher la table correspondante et crée une table si aucune correspondance exacte n’existe. Le code C# suivant illustre ce comportement.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Si FillSchema est appelé et ne contient qu’un DataTable seul dont le DataSet nom diffère uniquement par la casse, cela DataTable est mis à jour. Dans ce scénario, la comparaison ne respecte pas la casse. Le code C# suivant illustre ce comportement.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

FillSchema ne retourne aucune ligne. Utilisez la Fill méthode pour ajouter des lignes à un DataTable.

Remarque

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

Si 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 connaître les effets secondaires potentiels, tels que les interférences avec l'utilisation d'instructions SET FMTONLY ON. Pour plus d’informations, consultez SET FMTONLY (Transact-SQL).

Notes pour les héritiers

Cette implémentation de la FillSchema(DataSet, SchemaType) méthode est protégée et est conçue pour être utilisée par un fournisseur de données .NET Framework.

Voir aussi

S’applique à

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Configure le schéma du DataTable spécifié en fonction du SchemaType, de la chaîne de commande et des valeurs CommandBehavior définis.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

Paramètres

dataTable
DataTable

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

schemaType
SchemaType

Une des valeurs de l'objet SchemaType.

command
IDbCommand

Instruction SQL SELECT utilisée pour récupérer des lignes de la source de données.

behavior
CommandBehavior

Une des valeurs de l'objet CommandBehavior.

Retours

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

Remarques

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

Une FillSchema opération ajoute un DataTable à la destination DataSet. Il ajoute ensuite des colonnes au DataColumnCollection de DataTableet configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :

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

  • Si une ou plusieurs colonnes de clé primaire sont retournées par , SelectCommandelles sont utilisées comme colonnes de clé primaire pour .DataTable

  • Si aucune colonne clé primaire n’est retournée, mais que des colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas nuls. Si l’une des colonnes peut avoir la valeur Null, un UniqueConstraint est ajouté à , ConstraintCollectionmais la PrimaryKey propriété n’est pas définie.

  • Si les colonnes de clé primaire et les colonnes uniques sont retournées, les colonnes de clé primaire sont utilisées comme colonnes de clé primaire pour .DataTable

Notez que les clés primaires et les contraintes uniques sont ajoutées à en ConstraintCollection fonction des règles précédentes, mais que d’autres types de contraintes ne sont pas ajoutés.

Si un index cluster unique est défini sur une ou plusieurs colonnes d’une table SQL Server et que la contrainte de clé primaire est définie sur un ensemble distinct de colonnes, les noms des colonnes de l’index cluster sont retournés. Pour renvoyer le 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 Indicateurs (Transact-SQL) - Requête.

Si le IDataAdapter rencontre des colonnes en double lors du remplissage d’un DataTable, il génère des noms pour les colonnes suivantes, à l’aide du modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées dans le DataSet en fonction du modèle « Column1 », « Column2 », etc. Lorsque plusieurs jeux de résultats sont ajoutés au DataSet jeu de résultats, chaque jeu de résultats est placé dans une table distincte. D’autres jeux de résultats sont nommés en ajoutant des valeurs intégrales au nom de table spécifié (par exemple, « Table », « Table1 », « Table2 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’existe aucun conflit avec ces modèles d’affectation de noms.

FillSchema ne retourne aucune ligne. Utilisez la Fill méthode pour ajouter des lignes à un DataTable.

Remarque

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

Si 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 connaître les effets secondaires potentiels, tels que les interférences avec l'utilisation d'instructions SET FMTONLY ON. Pour plus d’informations, consultez SET FMTONLY (Transact-SQL).

Notes pour les héritiers

Cette implémentation de la FillSchema(DataSet, SchemaType) méthode est protégée et est conçue pour être utilisée par un fournisseur de données .NET Framework.

Voir aussi

S’applique à

FillSchema(DataSet, SchemaType, String)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Ajoute un DataTable au DataSet spécifié et configure le schéma pour qu'il corresponde à celui de la source de données en se basant sur les SchemaType et DataTable définis.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

Paramètres

dataSet
DataSet

DataSet dans lequel insérer le schéma.

schemaType
SchemaType

Une des valeurs SchemaType qui spécifient comment insérer le schéma.

srcTable
String

Le nom de la table source à utiliser pour le mappage de table.

Retours

Référence à une collection d’objets DataTable qui ont été ajoutés à DataSet.

Exceptions

Impossible de trouver une table source auprès de laquelle obtenir le schéma.

Exemples

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

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(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(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

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

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Remarques

Cette méthode récupère les informations de schéma de la source de données à l’aide de SelectCommand.

Une FillSchema opération ajoute un DataTable à la destination DataSet. Il ajoute ensuite des colonnes au DataColumnCollection de DataTableet configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :

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

  • Si une ou plusieurs colonnes de clé primaire sont retournées par , SelectCommandelles sont utilisées comme colonnes de clé primaire pour .DataTable

  • Si aucune colonne clé primaire n’est retournée, mais que des colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas nuls. Si l’une des colonnes peut avoir la valeur Null, un UniqueConstraint est ajouté à , ConstraintCollectionmais la PrimaryKey propriété n’est pas définie.

  • Si les colonnes de clé primaire et les colonnes uniques sont retournées, les colonnes de clé primaire sont utilisées comme colonnes de clé primaire pour .DataTable

Notez que les clés primaires et les contraintes uniques sont ajoutées à en ConstraintCollection fonction des règles précédentes, mais que d’autres types de contraintes ne sont pas ajoutés.

Si un index cluster unique est défini sur une ou plusieurs colonnes d’une table SQL Server et que la contrainte de clé primaire est définie sur un ensemble distinct de colonnes, les noms des colonnes de l’index cluster sont retournés. Pour renvoyer le 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 Indicateurs (Transact-SQL) - Requête.

Les informations de clé primaire sont utilisées pendant Fill pour rechercher et remplacer toutes les lignes dont les colonnes clés correspondent. Si ce n’est pas le comportement souhaité, utilisez Fill sans demander d’informations de schéma.

Si le DbDataAdapter rencontre des colonnes en double lors du remplissage d’un DataTable, il génère des noms pour les colonnes suivantes, à l’aide du modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées dans le DataSet en fonction du modèle « Column1 », « Column2 », etc. Lorsque plusieurs jeux de résultats sont ajoutés au DataSet jeu de résultats, chaque jeu de résultats est placé dans une table distincte. D’autres jeux de résultats sont nommés en ajoutant des valeurs intégrales au nom de table spécifié (par exemple, « Table », « Table1 », « Table2 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’existe aucun conflit avec ces modèles d’affectation de noms.

La FillSchema méthode prend en charge les scénarios où contient plusieurs DataTable objets dont les DataSet noms diffèrent uniquement par la casse. Dans de telles situations, FillSchema effectue une comparaison respectant la casse pour rechercher la table correspondante et crée une table si aucune correspondance exacte n’existe. Le code C# suivant illustre ce comportement.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Si FillSchema est appelé et ne contient qu’un DataTable seul dont le DataSet nom diffère uniquement par la casse, cela DataTable est mis à jour. Dans ce scénario, la comparaison ne respecte pas la casse. Le code C# suivant illustre ce comportement.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

L’objet IDbConnection associé à la commande select doit être valide, mais il n’a pas besoin de s’ouvrir. Si est fermé avant FillSchema d’être appelé, il est ouvert pour récupérer des IDbConnection données, puis fermé. Si la connexion est ouverte avant FillSchema d’être appelée, elle est laissée ouverte.

Remarque

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

Si 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 connaître les effets secondaires potentiels, tels que les interférences avec l'utilisation d'instructions SET FMTONLY ON. Pour plus d’informations, consultez SET FMTONLY (Transact-SQL).

Voir aussi

S’applique à

FillSchema(DataTable, SchemaType)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

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

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Paramètres

dataTable
DataTable

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

schemaType
SchemaType

Une des valeurs de l'objet SchemaType.

Retours

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

Exemples

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;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = 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
    End Using
End Function

Remarques

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

Une FillSchema opération retourne un DataTable. Il ajoute ensuite des colonnes au DataColumnCollection de DataTableet configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :

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

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

  • Si une ou plusieurs colonnes de clé primaire sont retournées par , SelectCommandelles sont utilisées comme colonnes de clé primaire pour .DataTable

  • Si aucune colonne clé primaire n’est retournée, mais que des colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas nuls. Si l’une des colonnes peut avoir la valeur Null, un UniqueConstraint est ajouté à , ConstraintCollectionmais la PrimaryKey propriété n’est pas définie.

  • Si les colonnes de clé primaire et les colonnes uniques sont retournées, les colonnes de clé primaire sont utilisées comme colonnes de clé primaire pour .DataTable

Notez que les clés primaires et les contraintes uniques sont ajoutées à en ConstraintCollection fonction des règles précédentes, mais que d’autres types de contraintes ne sont pas ajoutés. Ce processus peut nécessiter plusieurs allers-retours vers le serveur.

Si un index cluster unique est défini sur une ou plusieurs colonnes d’une table SQL Server et que la contrainte de clé primaire est définie sur un ensemble distinct de colonnes, les noms des colonnes de l’index cluster sont retournés. Pour renvoyer le 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 Indicateurs (Transact-SQL) - Requête.

Si le DbDataAdapter rencontre des colonnes en double lors du remplissage d’un DataTable, il génère des noms pour les colonnes suivantes, à l’aide du modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées dans le DataSet en fonction du modèle « Column1 », « Column2 », etc. Lorsque plusieurs jeux de résultats sont ajoutés au DataSet jeu de résultats, chaque jeu de résultats est placé dans une table distincte. D’autres jeux de résultats sont nommés en ajoutant des valeurs intégrales au nom de table spécifié (par exemple, « Table », « Table1 », « Table2 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’existe aucun conflit avec ces modèles d’affectation de noms.

FillSchema ne retourne aucune ligne. Utilisez la Fill méthode pour ajouter des lignes à un DataTable.

Remarque

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

Si 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 connaître les effets secondaires potentiels, tels que les interférences avec l'utilisation d'instructions SET FMTONLY ON. Pour plus d’informations, consultez SET FMTONLY (Transact-SQL).

Voir aussi

S’applique à

FillSchema(DataSet, SchemaType)

Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs
Source:
DbDataAdapter.cs

Ajoute un DataTable appelé "Table" au DataSet spécifié et configure le schéma pour qu'il corresponde à celui de la source de données en se basant sur le SchemaType spécifié.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Paramètres

dataSet
DataSet

DataSet dans lequel insérer le schéma.

schemaType
SchemaType

Une des valeurs SchemaType qui spécifient comment insérer le schéma.

Retours

Référence à une collection d’objets DataTable qui ont été ajoutés à DataSet.

Implémente

Exemples

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

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(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(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

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

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Remarques

Cette méthode récupère les informations de schéma de la source de données à l’aide de SelectCommand.

Une FillSchema opération ajoute un DataTable à la destination DataSet. Il ajoute ensuite des colonnes au DataColumnCollection de DataTableet configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :

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

  • Si une ou plusieurs colonnes de clé primaire sont retournées par , SelectCommandelles sont utilisées comme colonnes de clé primaire pour .DataTable

  • Si aucune colonne clé primaire n’est retournée, mais que des colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas nuls. Si l’une des colonnes peut avoir la valeur Null, un UniqueConstraint est ajouté à , ConstraintCollectionmais la PrimaryKey propriété n’est pas définie.

  • Si les colonnes de clé primaire et les colonnes uniques sont retournées, les colonnes de clé primaire sont utilisées comme colonnes de clé primaire pour .DataTable

Notez que les clés primaires et les contraintes uniques sont ajoutées à en ConstraintCollection fonction des règles précédentes, mais que d’autres types de contraintes ne sont pas ajoutés.

Si un index cluster unique est défini sur une ou plusieurs colonnes d’une table SQL Server et que la contrainte de clé primaire est définie sur un ensemble distinct de colonnes, les noms des colonnes de l’index cluster sont retournés. Pour renvoyer le 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 Indicateurs (Transact-SQL) - Requête.

Les informations de clé primaire sont utilisées pendant Fill pour rechercher et remplacer toutes les lignes dont les colonnes clés correspondent. Si ce n’est pas le comportement souhaité, utilisez Fill sans demander d’informations de schéma.

Si le IDataAdapter rencontre des colonnes en double lors du remplissage d’un DataTable, il génère des noms pour les colonnes suivantes, à l’aide du modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées dans le DataSet en fonction du modèle « Column1 », « Column2 », etc. Lorsque plusieurs jeux de résultats sont ajoutés au DataSet jeu de résultats, chaque jeu de résultats est placé dans une table distincte. D’autres jeux de résultats sont nommés en ajoutant des valeurs intégrales au nom de table spécifié (par exemple, « Table », « Table1 », « Table2 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’existe aucun conflit avec ces modèles d’affectation de noms.

L’objet IDbConnection associé à la commande select doit être valide, mais il n’a pas besoin de s’ouvrir. Si est fermé avant FillSchema d’être appelé, il est ouvert pour récupérer des IDbConnection données, puis fermé. Si la connexion est ouverte avant FillSchema d’être appelée, elle est laissée ouverte.

Remarque

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

Si 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 connaître les effets secondaires potentiels, tels que les interférences avec l'utilisation d'instructions SET FMTONLY ON. Pour plus d’informations, consultez SET FMTONLY (Transact-SQL).

Voir aussi

S’applique à