Partager via


OleDbDataAdapter.Fill Méthode

Définition

Ajoute ou actualise les lignes de DataSet pour qu'elles correspondent à celles de l'objet ADO Recordset ou Record.

Surcharges

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.

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.

Fill(DataTable, Object)

Source:
OleDbDataAdapter.cs
Source:
OleDbDataAdapter.cs
Source:
OleDbDataAdapter.cs

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.

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
Public Function Fill (dataTable As DataTable, ADODBRecordSet As Object) As Integer

Paramètres

dataTable
DataTable

DataTable à remplir avec des enregistrements et, si cela est requis, un schéma.

ADODBRecordSet
Object

Objet Recordset ou Record ADO.

Retours

Nombre de lignes correctement actualisées en fonction de DataTable. Cela n'inclut pas les lignes affectées par des instructions qui ne retournent pas de ligne.

Remarques

Le lien entre ActiveX Data Objects (ADO) et ADO.NET est une opération unidirectionnelle dans laquelle vous pouvez copier des données d’ADO vers le DataSet, mais toute mise à jour des données doit être gérée par ADO.NET.

Cette surcharge de la Fill méthode ne ferme pas l’entrée Recordset à la fin de l’opération Fill .

Lors de la gestion des instructions SQL batch qui retournent plusieurs résultats, cette implémentation de Fill et FillSchema pour le fournisseur de données OLE DB.NET Framework récupère les informations de schéma pour le premier résultat uniquement.

L’opération Fill ajoute les lignes à l’objet de destination DataTable spécifié dans , DataSeten créant l’objet DataTable s’il n’existe pas déjà. Lorsque vous créez un DataTable objet, l’opération Fill crée généralement uniquement des métadonnées de nom de colonne. Toutefois, si la MissingSchemaAction propriété est définie sur AddWithKey, les clés primaires et les contraintes appropriées sont également créées.

Vous pouvez utiliser la Fill méthode plusieurs fois sur le même DataTable. S’il existe une clé primaire, les lignes entrantes sont fusionnées avec les lignes correspondantes qui existent déjà. S’il n’existe aucune clé primaire, les lignes entrantes sont ajoutées à .DataTable Si des informations sur la clé primaire sont présentes, toutes les lignes en double sont rapprochées et n’apparaissent qu’une seule fois dans qui DataTable correspond à .DataSet Les informations sur la clé primaire peuvent être définies via FillSchema, en spécifiant la PrimaryKey propriété du DataTable, ou en affectant à AddWithKeyla propriété la MissingSchemaAction valeur .

Si SelectCommand retourne les résultats d'une jointure externe, le DataAdapter ne définit pas de valeur PrimaryKey pour le DataTableobtenu. Vous devez définir explicitement la clé primaire pour vous assurer que les lignes en double sont correctement résolues. Pour plus d’informations, consultez Définition des clés primaires.

Pour fonctionner correctement avec le fournisseur de données .NET Framework pour OLE DB, AddWithKey nécessite que le fournisseur 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 colonnes clés primaires en examinant DBCOLUMN_KEYCOLUMN dans le IColumnsRowset. L’utilisateur peut également définir explicitement les contraintes de clé primaire sur chaque DataTable. Cela permet de s’assurer que les enregistrements entrants qui correspondent aux enregistrements existants sont mis à jour au lieu d’être ajoutés.

Si le OleDbDataAdapter 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. Les noms de colonnes vides sont ajoutés à , à l’aide DataTabled’une chaîne vide pour la première colonne, suivie de « 1 », « 2 », « 3 », etc. pour les colonnes vides suivantes.

Les valeurs dans ADO Recordset ou Record les objets sont converties en types Common Language Runtime pour le stockage dans le DataSet.

Attention

Cette surcharge de la Fill méthode n’appelle Close pas implicitement l’objet ADO lorsque l’opération de remplissage est terminée. Par conséquent, appelez Close toujours lorsque vous avez terminé d’utiliser ADO Recordset ou Record des objets. Cela permet de s’assurer que la connexion sous-jacente à une source de données est libérée en temps voulu, et d’éviter également d’éventuelles violations d’accès en raison de la récupération d’objets ADO non managés par le garbage collection lorsque des références existantes existent toujours.

Lorsque 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 jeu de données est correctement rempli à l’aide de la table source, mais le jeu de données n’est rempli avec rien. Par exemple, dans l’exemple suivant, rDataSet est rempli avec rien.

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

Cet exemple montre comment ignorer un résultat lorsque vous traitez plusieurs résultats.

L’exemple suivant utilise un OleDbDataAdapter pour remplir un DataTable à l’aide d’un ado Recordset. Cet exemple suppose que vous avez créé un 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

S’applique à

Fill(DataSet, Object, String)

Source:
OleDbDataAdapter.cs
Source:
OleDbDataAdapter.cs
Source:
OleDbDataAdapter.cs

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.

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
Public Function Fill (dataSet As DataSet, ADODBRecordSet As Object, srcTable As String) As Integer

Paramètres

dataSet
DataSet

DataSet à remplir avec des enregistrements et, si cela est requis, un schéma.

ADODBRecordSet
Object

Objet Recordset ou Record ADO.

srcTable
String

Table source utilisée pour les mappages de tables.

Retours

Nombre de lignes correctement ajoutées ou actualisées dans DataSet. Cela n'inclut pas les lignes affectées par des instructions qui ne retournent pas de ligne.

Exceptions

La table source n'est pas valide.

Remarques

Le lien entre ActiveX Data Objects (ADO) et ADO.NET est une opération unidirectionnelle dans laquelle vous pouvez copier des données d’ADO vers le DataSet, mais toute mise à jour des données doit être gérée par ADO.NET.

La Fill méthode itère dans plusieurs résultats en appelant la NextRecordset méthode sur le Recordset, fermant l’entrée Recordset à la fin de l’opération Fill .

L’opération Fill ajoute les lignes à l’objet de destination DataTable spécifié dans , DataSeten créant l’objet DataTable s’il n’existe pas déjà. Lorsque vous créez un DataTable objet, l’opération Fill crée généralement uniquement des métadonnées de nom de colonne. Toutefois, si la MissingSchemaAction propriété est définie sur AddWithKey, les clés primaires et les contraintes appropriées sont également créées.

Si des informations sur la clé primaire sont présentes, toutes les lignes en double sont rapprochées et n’apparaissent qu’une seule fois dans qui DataTable correspond à .DataSet Les informations sur la clé primaire peuvent être définies via FillSchema, en spécifiant la PrimaryKey propriété du DataTable, ou en affectant à AddWithKeyla propriété la MissingSchemaAction valeur .

Pour fonctionner correctement avec le fournisseur de données .NET Framework pour OLE DB, AddWithKey nécessite que le fournisseur OLE DB natif obtienne les informations de clé primaire requises en définissant la propriété DBPROP_UNIQUEROWS, puis déterminez quelles colonnes sont des colonnes clés primaires en examinant DBCOLUMN_KEYCOLUMN dans IColumnsRowset. L’utilisateur peut également définir explicitement les contraintes de clé primaire sur chaque DataTable. De cette façon, les enregistrements entrants qui correspondent à des enregistrements existants sont mis à jour plutôt que d'être ajoutés.

Si SelectCommand retourne les résultats d'une jointure externe, le DataAdapter ne définit pas de valeur PrimaryKey pour le DataTableobtenu. Vous devez définir explicitement la clé primaire pour vous assurer que les lignes en double sont correctement résolues. Pour plus d’informations, consultez Définition des clés primaires.

Si est Recordset fermé avant le début de l’opération Fill , aucune erreur ne se produit. Cela est nécessaire pour la gestion de plusieurs résultats, car les requêtes qui ne retournent pas de lignes sont indiquées par un fermé Recordset. Le OleDbDataAdapter appelle NextRecordset juste sur le fermé Recordset et continue le traitement.

Si une erreur est rencontrée lors du remplissage du jeu de données, les lignes ajoutées avant l’occurrence de l’erreur restent dans le DataSet. Le reste de l’opération est abandonné.

Si l’objet 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.). Les applications qui utilisent des noms de colonnes et de tables doivent s’assurer que les conflits avec ces modèles d’affectation de noms ne se produisent pas.

Les valeurs dans ADO Recordset ou Record les objets sont converties en types Common Language Runtime pour le stockage dans le 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.

L’exemple suivant utilise un OleDbDataAdapter pour remplir un DataSet à l’aide d’un objet ADO Recordset qui est un objet ADO Record . Cet exemple suppose que vous avez créé un objet ADO RecordSet et Record .

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 à