OleDbDataAdapter.Fill OleDbDataAdapter.Fill OleDbDataAdapter.Fill Method

Définition

Ajoute ou actualise les lignes de DataSet pour qu'elles correspondent à celles de l'objet ADO Recordset ou Record.Adds or refreshes rows in the DataSet to match those in an ADO Recordset or Record object.

Surcharges

Fill(DataTable, Object) Fill(DataTable, Object) Fill(DataTable, Object)

Ajoute ou actualise les lignes de DataTable pour qu'elles correspondent à celles de l'objet Recordset ou Record à l'aide des objets DataTable et ADO spécifiés.Adds or refreshes rows in a DataTable to match those in an ADO Recordset or Record object using the specified DataTable and ADO objects.

Fill(DataSet, Object, String) Fill(DataSet, Object, String) Fill(DataSet, Object, String)

Ajoute ou actualise les lignes de DataSet pour qu'elles correspondent à celles d'un objet Recordset ou Record ADO à l'aide du DataSet, de l'objet ADO et du nom de table source spécifiés.Adds or refreshes rows in the DataSet to match those in an ADO Recordset or Record object using the specified DataSet, ADO object, and source table name.

Fill(DataTable, Object) Fill(DataTable, Object) Fill(DataTable, Object)

Ajoute ou actualise les lignes de DataTable pour qu'elles correspondent à celles de l'objet Recordset ou Record à l'aide des objets DataTable et ADO spécifiés.Adds or refreshes rows in a DataTable to match those in an ADO Recordset or Record object using the specified DataTable and ADO objects.

public:
 int Fill(System::Data::DataTable ^ dataTable, System::Object ^ ADODBRecordSet);
public int Fill (System.Data.DataTable dataTable, object ADODBRecordSet);
override this.Fill : System.Data.DataTable * obj -> int

Paramètres

dataTable
DataTable DataTable DataTable

DataTable à remplir avec des enregistrements et, si cela est requis, un schéma.A DataTable to fill with records and, if it is required, schema.

ADODBRecordSet
Object Object Object

Objet Recordset ou Record ADO.An ADO Recordset or Record object.

Retours

Nombre de lignes correctement actualisées en fonction de DataTable.The number of rows successfully refreshed to the DataTable. Cela n'inclut pas les lignes affectées par des instructions qui ne retournent pas de ligne.This does not include rows affected by statements that do not return rows.

Remarques

Le lien entre les ActiveX Data Objects (ADO) et ADO.net est une opération unidirectionnelle dans le sens où vous pouvez copier des données depuis ADO DataSetvers le, mais les mises à jour des données doivent être gérées par ADO.net.The link between ActiveX Data Objects (ADO) and ADO.NET is a one-way operation in that you can copy data from ADO to the DataSet, but any updates to the data must be handled by ADO.NET.

Cette surcharge de la Fill méthode ne ferme pas l’entrée Recordset à la fin de Fill l’opération.This overload of the Fill method does not close the input Recordset on completion of the Fill operation.

Lors du traitement d’instructions SQL par lots qui retournent plusieurs Fill résultats FillSchema , cette implémentation de et pour l’infrastructure OLE DB.net fournisseur de données récupère les informations de schéma uniquement pour le premier résultat.When handling batch SQL statements that return multiple results, this implementation of Fill and FillSchema for the OLE DB.NET Framework Data Provider retrieves schema information for only the first result.

L' Fill opération ajoute les lignes à l’objet de DataTable destination spécifié dans DataSetle, en DataTable créant l’objet s’il n’existe pas déjà.The Fill operation adds the rows to the specified destination DataTable object in the DataSet, creating the DataTable object if it does not already exist. Lorsque vous créez un DataTable objet, l' Fill opération crée normalement uniquement des métadonnées de nom de colonne.When you create a DataTable object, the Fill operation ordinarily creates only column name metadata. Toutefois, si la MissingSchemaAction propriété a la AddWithKeyvaleur, les clés primaires et les contraintes appropriées sont également créées.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Vous pouvez utiliser la Fill méthode plusieurs fois sur le même DataTable.You can use the Fill method multiple times on the same DataTable. Si une clé primaire existe, les lignes entrantes sont fusionnées avec les lignes correspondantes qui existent déjà.If a primary key exists, incoming rows are merged with matching rows that already exist. Si aucune clé primaire n’existe, les DataTablelignes entrantes sont ajoutées au.If no primary key exists, incoming rows are appended to the DataTable. Si des informations de clé primaire sont présentes, toutes les lignes en double sont conciliées et n’apparaissent DataTable qu’une seule fois DataSetdans la qui correspond à.If primary key information is present, any duplicate rows are reconciled and only appear one time in the DataTable that corresponds to the DataSet. Les informations de clé primaire peuvent être définies FillSchemapar le biais de PrimaryKey , en spécifiant la propriété du DataTableou MissingSchemaAction en affectant à AddWithKeyla propriété la valeur.Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Si SelectCommand retourne les résultats d'une jointure externe, le DataAdapter ne définit pas de valeur PrimaryKey pour le DataTableobtenu.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Vous devez définir explicitement la clé primaire pour vous assurer que les lignes dupliquées sont correctement résolues.You must explicitly define the primary key to make sure that duplicate rows are resolved correctly. Pour plus d’informations, consultez définition des clés primaires.For more information, see Defining Primary Keys.

Pour fonctionner correctement avec le fournisseur de données .NET Framework pour OLE DB, AddWithKey exige que le fournisseur de OLE DB natif obtienne les informations de clé primaire requises en définissant la propriété DBPROP_UNIQUEROWS, puis détermine quelles colonnes sont des clés primaires. colonnes en examinant DBCOLUMN_KEYCOLUMN dans IColumnsRowsetle.To function correctly with the .NET Framework Data Provider for OLE DB, AddWithKey requires that the native OLE DB provider obtains required primary key information by setting the DBPROP_UNIQUEROWS property, and then determines which columns are primary key columns by examining DBCOLUMN_KEYCOLUMN in the IColumnsRowset. L’utilisateur peut également définir de manière explicite les contraintes de clé primaire DataTablesur chaque.Alternatively the user may explicitly set the primary key constraints on each DataTable. Cela permet de s’assurer que les enregistrements entrants qui correspondent aux enregistrements existants sont mis à jour au lieu d’être ajoutés.This makes sure that incoming records that match existing records are updated instead of appended.

Si le OleDbDataAdapter rencontre des colonnes dupliquées lors du remplissage DataTabled’un, il génère des noms pour les colonnes suivantes, à l’aide du modèle «ColumnName1 », «ColumnName2 », «ColumnName3 », etc.If the OleDbDataAdapter encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Les noms de colonnes vides sont ajoutés DataTableà, à l’aide d’une chaîne vide pour la première colonne, suivie de « 1 », « 2 », « 3 », etc. pour les colonnes vides suivantes.Empty column names are added to the DataTable, using an empty string for the first column, followed by "1", "2", "3", and so on for the subsequent empty columns.

Les valeurs dans Recordset ADO Record ou les objets sont converties en types Common Language Runtime DataSetpour le stockage dans le.Values in ADO Recordset or Record objects are converted to common language runtime types for storage in the DataSet.

Attention

Cette surcharge de la Fill méthode n’appelle Close pas implicitement sur l’objet ADO lorsque l’opération de remplissage est terminée.This overload of the Fill method does not implicitly call Close on the ADO object when the fill operation is complete. Par conséquent, appelez Close toujours lorsque vous avez fini d' Recordset utiliser Record ADO ou des objets.Therefore, always call Close when you are finished using ADO Recordset or Record objects. Cela permet de s’assurer que la connexion sous-jacente à une source de données est libérée en temps utile, et empêche également les violations d’accès possibles en raison des objets ADO non managés qui sont récupérés par garbage collection lorsque des références existantes existent encore.This makes sure that the underlying connection to a data source is released in a timely manner, and also prevents possible access violations because of unmanaged ADO objects being reclaimed by garbage collection when existing references still exist.

Quand vous appelez la TableMappings.Add méthode sur un DataAdapter et que vous mappez explicitement le paramètre de table source à une chaîne vide, le DataSet est rempli avec succès à l’aide de la table source, mais le jeu de données est rempli sans rien.When you call the TableMappings.Add method on a DataAdapter and you explicitly map the source table parameter to an empty string, the dataset is successfully filled using the source table, but the dataset will be populated with nothing. Par exemple, dans l’exemple suivant, rDataSet est renseigné sans rien.For example, in the following example, rDataSet will be populated with nothing.

rAdapter.TableMappings.Add("source table", "");  
rAdapter.Fill(rDataSet, "source table");     

Cet exemple montre comment vous pouvez ignorer un résultat lors du traitement de plusieurs résultats.This example shows how you can skip a result when dealing with multiple results.

L’exemple suivant utilise un OleDbDataAdapter pour remplir un DataTable à l’aide Recordsetd’un objet ADO.The following example uses an OleDbDataAdapter to fill a DataTable using an ADO Recordset. Cet exemple suppose que vous avez créé un objet ADO Recordset.This example assumes that you have created an ADO Recordset.

Dim custDA As OleDbDataAdapter = New OleDbDataAdapter()  
     Dim custDS As DataSet = New DataSet  
     Dim custTable As DataTable = New DataTable("Customers")  
     custTable.Columns.Add("CustomerID", Type.GetType("System.String"))  
     custTable.Columns.Add("CompanyName", Type.GetType("System.String"))  
     custDS.Tables.Add(custTable)  
     'Use ADO objects from ADO library (msado15.dll) imported  
     ' as.NET library ADODB.dll using TlbImp.exe  
     Dim adoConn As ADODB.Connection = New ADODB.Connection()  
     Dim adoRS As ADODB.Recordset = New ADODB.Recordset()  
     adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1)  
     adoRS.Open("SELECT CustomerID, CompanyName FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1)  
     custDA.Fill(custTable, adoRS)  
     adoRS.Close()  
     adoConn.Close()  
OleDbDataAdapter custDA = new OleDbDataAdapter();  
     DataSet custDS = new DataSet();  
     DataTable custTable = new DataTable("Customers");  
     custTable.Columns.Add("CustomerID", typeof(String));  
     custTable.Columns.Add("CompanyName", typeof(String));  
     custDS.Tables.Add(custTable);  
     //Use ADO objects from ADO library (msado15.dll) imported  
     //  as.NET library ADODB.dll using TlbImp.exe  
     ADODB.Connection adoConn = new ADODB.Connection();  
     ADODB.Recordset adoRS = new ADODB.Recordset();  
     adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1);  
     adoRS.Open("SELECT CustomerID, CompanyName FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1);  
     custDA.Fill(custTable, adoRS);  
     adoRS.Close();  
     adoConn.Close();  
Voir aussi

Fill(DataSet, Object, String) Fill(DataSet, Object, String) Fill(DataSet, Object, String)

Ajoute ou actualise les lignes de DataSet pour qu'elles correspondent à celles d'un objet Recordset ou Record ADO à l'aide du DataSet, de l'objet ADO et du nom de table source spécifiés.Adds or refreshes rows in the DataSet to match those in an ADO Recordset or Record object using the specified DataSet, ADO object, and source table name.

public:
 int Fill(System::Data::DataSet ^ dataSet, System::Object ^ ADODBRecordSet, System::String ^ srcTable);
public int Fill (System.Data.DataSet dataSet, object ADODBRecordSet, string srcTable);
override this.Fill : System.Data.DataSet * obj * string -> int

Paramètres

dataSet
DataSet DataSet DataSet

DataSet à remplir avec des enregistrements et, si cela est requis, un schéma.A DataSet to fill with records and, if it is required, schema.

ADODBRecordSet
Object Object Object

Objet Recordset ou Record ADO.An ADO Recordset or Record object.

srcTable
String String String

Table source utilisée pour les mappages de tables.The source table used for the table mappings.

Retours

Nombre de lignes correctement ajoutées ou actualisées dans DataSet.The number of rows successfully added to or refreshed in the DataSet. Cela n'inclut pas les lignes affectées par des instructions qui ne retournent pas de ligne.This does not include rows affected by statements that do not return rows.

Exceptions

La table source n'est pas valide.The source table is invalid.

Remarques

Le lien entre les ActiveX Data Objects (ADO) et ADO.net est une opération unidirectionnelle dans le sens où vous pouvez copier des données depuis ADO DataSetvers le, mais les mises à jour des données doivent être gérées par ADO.net.The link between ActiveX Data Objects (ADO) and ADO.NET is a one-way operation in that you can copy data from ADO to the DataSet, but any updates to the data must be handled by ADO.NET.

La Fill méthode itère au sein de plusieurs résultats en appelant NextRecordset la méthode sur Recordsetle, en fermant Recordset l’entrée à la Fill fin de l’opération.The Fill method iterates through multiple results by calling the NextRecordset method on the Recordset, closing the input Recordset on completion of the Fill operation.

L' Fill opération ajoute les lignes à l’objet de DataTable destination spécifié dans DataSetle, en DataTable créant l’objet s’il n’existe pas déjà.The Fill operation adds the rows to the specified destination DataTable object in the DataSet, creating the DataTable object if it does not already exist. Lorsque vous créez un DataTable objet, l' Fill opération crée normalement uniquement des métadonnées de nom de colonne.When you create a DataTable object, the Fill operation ordinarily creates only column name metadata. Toutefois, si la MissingSchemaAction propriété a la AddWithKeyvaleur, les clés primaires et les contraintes appropriées sont également créées.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Si des informations de clé primaire sont présentes, toutes les lignes en double sont conciliées et n’apparaissent DataTable qu’une seule fois DataSetdans la qui correspond à.If primary key information is present, any duplicate rows are reconciled and only appear one time in the DataTable that corresponds to the DataSet. Les informations de clé primaire peuvent être définies FillSchemapar le biais de PrimaryKey , en spécifiant la propriété du DataTableou MissingSchemaAction en affectant à AddWithKeyla propriété la valeur.Primary key information may be set either through FillSchema, by specifying the PrimaryKey property of the DataTable, or by setting the MissingSchemaAction property to AddWithKey.

Pour fonctionner correctement avec le fournisseur de données .NET Framework pour OLE DB, AddWithKey requiert que le fournisseur de OLE DB natif obtienne les informations de clé primaire requises en définissant la propriété DBPROP_UNIQUEROWS, puis en déterminant les colonnes qui sont des clés primaires colonnes en examinant DBCOLUMN_KEYCOLUMN dans IColumnsRowset.To function correctly with the .NET Framework Data Provider for OLE DB, AddWithKey requires the native OLE DB provider to obtain required primary key information by setting the DBPROP_UNIQUEROWS property, and then determine which columns are primary key columns by examining DBCOLUMN_KEYCOLUMN in the IColumnsRowset. L’utilisateur peut également définir de manière explicite les contraintes de clé primaire DataTablesur chaque.Alternatively the user may explicitly set the primary key constraints on each DataTable. De cette façon, les enregistrements entrants qui correspondent à des enregistrements existants sont mis à jour plutôt que d'être ajoutés.This ensures that incoming records that match existing records are updated instead of appended.

Si SelectCommand retourne les résultats d'une jointure externe, le DataAdapter ne définit pas de valeur PrimaryKey pour le DataTableobtenu.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Vous devez définir explicitement la clé primaire pour vous assurer que les lignes dupliquées sont correctement résolues.You must explicitly define the primary key to make sure that duplicate rows are resolved correctly. Pour plus d’informations, consultez définition des clés primaires.For more information, see Defining Primary Keys.

Si le Recordset est fermé avant le démarrage de l' Fill opération, aucune erreur ne se produit.If the Recordset is closed before the starting of the Fill operation, no error results. Cela est requis pour la gestion de plusieurs résultats, car les requêtes qui ne retournent pas de lignes Recordsetsont indiquées par un fermé.This is required for handling of multiple results, because queries that do not return rows are indicated by a closed Recordset. Le OleDbDataAdapter Recordset appelle NextRecordset simplement sur le processus fermé et poursuit le traitement.The OleDbDataAdapter just calls NextRecordset on the closed Recordset and continues processing.

Si une erreur se produit lors du remplissage du jeu de données, les lignes ajoutées avant l’occurrence de l’erreur DataSetrestent dans le.If an error is encountered while populating the data set, rows added before the occurrence of the error remain in the DataSet. Le reste de l’opération est abandonné.The rest of the operation is aborted.

Si l' DbDataAdapter objet rencontre des colonnes dupliquées lors du remplissage DataTabled’un, il génère des noms pour les colonnes suivantes, à l’aide du modèle «ColumnName1 », «ColumnName2 », «ColumnName3 », et ainsi de suite.If the DbDataAdapter object encounters duplicate columns while populating a DataTable, it generates names for the subsequent columns, using the pattern "columnname1", "columnname2", "columnname3", and so on. Si les données entrantes contiennent des colonnes sans nom, elles sont placées DataSet dans en fonction du modèle « Column1 », « Column2 », et ainsi de suite.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Lorsque plusieurs jeux de résultats sont ajoutés à DataSet chaque jeu de résultats est placé dans une table distincte.When multiple result sets are added to the DataSet each result set is placed in a separate table. 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.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Les applications qui utilisent des noms de colonnes et de tables doivent s’assurer que les conflits avec ces modèles de nommage ne se produisent pas.Applications that use column and table names should make sure that conflicts with these naming patterns does not occur.

Les valeurs dans Recordset ADO Record ou les objets sont converties en types Common Language Runtime DataSetpour le stockage dans le.Values in ADO Recordset or Record objects are converted to common language runtime types for storage in the DataSet.

Notes

Cette surcharge de la Fill méthode appelle Close implicitement sur l’objet ADO lorsque l’opération de remplissage est terminée.This overload of the Fill method implicitly calls Close on the ADO object when the fill operation is complete.

L’exemple suivant utilise un OleDbDataAdapter pour remplir un DataSet objet à l' Recordset aide d’un objet Record ADO qui est un objet ADO.The following example uses an OleDbDataAdapter to fill a DataSet using an ADO Recordset that is an ADO Record object. Cet exemple suppose que vous avez créé un objet ADO RecordSet et Record un objet.This example assumes that you have created an ADO RecordSet and Record object.

Dim custDA As OleDbDataAdapter = New OleDbDataAdapter()  
     Dim custDS As DataSet = New DataSet  
     'Use ADO objects from ADO library (msado15.dll) imported  
     ' as.NET library ADODB.dll using TlbImp.exe  
     Dim adoConn As ADODB.Connection = New ADODB.Connection()  
     Dim adoRS As ADODB.Recordset = New ADODB.Recordset()  
     adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1)  
     adoRS.Open("SELECT * FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1)  
     custDA.Fill(custDS, adoRS, "Customers")  
     adoConn.Close()  
OleDbDataAdapter custDA = new OleDbDataAdapter();  
     DataSet custDS = new DataSet();  
     //Use ADO objects from ADO library (msado15.dll) imported  
     // as.NET library ADODB.dll using TlbImp.exe  
     ADODB.Connection adoConn = new ADODB.Connection();  
     ADODB.Recordset adoRS = new ADODB.Recordset();  
     adoConn.Open("Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;", "", "", -1);  
     adoRS.Open("SELECT * FROM Customers", adoConn, ADODB.CursorTypeEnum.adOpenForwardOnly, ADODB.LockTypeEnum.adLockReadOnly, 1);  
     custDA.Fill(custDS, adoRS, "Customers");  
     adoConn.Close();  
Voir aussi

S’applique à