DbDataAdapter.FillSchema 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.
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
- 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 à partir 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 du DataTable, et configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :
AutoIncrement. Vous devez définir AutoIncrementStep et AutoIncrementSeed séparément.
FillSchema configure également les PrimaryKey propriétés et Constraints en fonction des 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 de clé primaire n’est retournée, mais que les colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas crédulables. Si l’une des colonnes est nullable, 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 au ConstraintCollection en fonction des règles précédentes, mais d’autres types de contraintes ne sont pas ajoutés.
Si un index cluster unique est défini sur une colonne ou des 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 nom 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 d’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, en utilisant le modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées selon DataSet le 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. Les 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 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’y a 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 cas, 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.
Notes
Lors de la gestion des instructions SQL par lots qui retournent plusieurs résultats, l’implémentation du 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
- 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 à partir 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 du DataTable, et configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :
AutoIncrement. Vous devez définir AutoIncrementStep et AutoIncrementSeed séparément.
FillSchema configure également les PrimaryKey propriétés et Constraints en fonction des 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 de clé primaire n’est retournée, mais que les colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas crédulables. Si l’une des colonnes est nullable, 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 au ConstraintCollection en fonction des règles précédentes, mais d’autres types de contraintes ne sont pas ajoutés.
Si un index cluster unique est défini sur une colonne ou des 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 nom 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 d’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, en utilisant le modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées selon DataSet le 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. Les 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 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’y a 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.
Notes
Lors de la gestion des instructions SQL par lots qui retournent plusieurs résultats, l’implémentation du 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
- 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 du DataTable, et configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :
AutoIncrement. Vous devez définir AutoIncrementStep et AutoIncrementSeed séparément.
FillSchema configure également les PrimaryKey propriétés et Constraints en fonction des 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 de clé primaire n’est retournée, mais que les colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas crédulables. Si l’une des colonnes est nullable, 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 au ConstraintCollection en fonction des règles précédentes, mais d’autres types de contraintes ne sont pas ajoutés.
Si un index cluster unique est défini sur une colonne ou des 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 nom 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 d’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, en utilisant le modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées selon DataSet le 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. Les 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 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’y a 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 cas, 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 l’ouvrir. Si le IDbConnection est fermé avant FillSchema d’être appelé, il est ouvert pour récupérer des données, puis fermé. Si la connexion est ouverte avant FillSchema d’être appelée, elle est laissée ouverte.
Notes
Lors de la gestion des instructions SQL par lots qui retournent plusieurs résultats, l’implémentation du 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
- 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 à partir 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 du DataTable, et configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :
AutoIncrement. Vous devez définir AutoIncrementStep et AutoIncrementSeed séparément.
FillSchema configure également les PrimaryKey propriétés et Constraints en fonction des règles suivantes :
Si un PrimaryKey a déjà été défini pour ou
DataTable
contient desDataTable
données, laPrimaryKey
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 de clé primaire n’est retournée, mais que les colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas crédulables. Si l’une des colonnes est nullable, 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 au ConstraintCollection en fonction des règles précédentes, mais 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 colonne ou des 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 nom 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 d’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, en utilisant le modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées selon DataSet le 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. Les 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 », etc.). Si votre application utilise des noms de colonnes et de tables, assurez-vous qu’il n’y a 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.
Notes
Lors de la gestion des instructions SQL par lots qui retournent plusieurs résultats, l’implémentation du 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
- 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 du DataTable, et configure les propriétés suivantes DataColumn si elles existent au niveau de la source de données :
AutoIncrement. Vous devez définir AutoIncrementStep et AutoIncrementSeed séparément.
FillSchema configure également les PrimaryKey propriétés et Constraints en fonction des 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 de clé primaire n’est retournée, mais que les colonnes uniques le sont, les colonnes uniques sont utilisées comme clé primaire si, et seulement si, toutes les colonnes uniques ne sont pas crédulables. Si l’une des colonnes est nullable, 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 au ConstraintCollection en fonction des règles précédentes, mais d’autres types de contraintes ne sont pas ajoutés.
Si un index cluster unique est défini sur une colonne ou des 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 nom 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 d’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, en utilisant le modèle « columnname1 », « columnname2 », « columnname3 », etc. Si les données entrantes contiennent des colonnes sans nom, elles sont placées selon DataSet le 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. Les 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 », 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.
Notes
Lors de la gestion des instructions SQL batch 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 le premier résultat uniquement. 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).