OleDbDataAdapter.Fill OleDbDataAdapter.Fill OleDbDataAdapter.Fill Method

Definition

Aktualisiert Zeilen im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in einem ADO-Recordset-Objekt oder einem ADO-Record-Objekt herzustellen.Adds or refreshes rows in the DataSet to match those in an ADO Recordset or Record object.

Überlädt

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

Aktualisiert Zeilen in einer DataTable oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in einem ADO-Recordset-Objekt oder einem Record-Objekt herzustellen, wobei die angegebene DataTable und die angegebenen ADO-Objekte verwendet werden.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)

Aktualisiert Zeilen im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in einem ADO-Recordset-Objekt oder einem ADO-Record-Objekt herzustellen, wobei das angegebene DataSet, das angegebene ADO-Objekt und der angegebene Quelltabellenname verwendet werden.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)

Aktualisiert Zeilen in einer DataTable oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in einem ADO-Recordset-Objekt oder einem Record-Objekt herzustellen, wobei die angegebene DataTable und die angegebenen ADO-Objekte verwendet werden.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

Parameter

dataTable
DataTable DataTable DataTable

Ein DataTable, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt werden soll.A DataTable to fill with records and, if it is required, schema.

ADODBRecordSet
Object Object Object

Ein ADO-Recordset-Objekt oder ein ADO-Record-Objekt.An ADO Recordset or Record object.

Gibt zurück

Die Anzahl der erfolgreich aktualisierten Zeilen in der DataTable.The number of rows successfully refreshed to the DataTable. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.This does not include rows affected by statements that do not return rows.

Hinweise

Die Verknüpfung zwischen ActiveX Data Objects (ADO) und ADO.NET ist ein unidirektionaler Vorgang, zum Kopieren von Daten über ADO, um die DataSet, aber alle Updates der Daten müssen vom ADO.NET behandelt werden.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.

Diese Überladung von der Fill Methode schließt nicht die Eingabe Recordset nach Abschluss der Fill Vorgang.This overload of the Fill method does not close the input Recordset on completion of the Fill operation.

Bei der Behandlung von SQL-Anweisungen, die diese Implementierung der mehrere Ergebnisse zurückgeben Fill und FillSchema für den OLE DB-.NET Framework-Datenanbieter Schemainformationen für nur das erste Ergebnis ab.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.

Die Fill Vorgang fügt die Zeilen in das angegebene Ziel DataTable -Objekt in der DataSet, wodurch die DataTable Objekt, wenn es nicht bereits vorhanden ist.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. Bei der Erstellung einer DataTable -Objekt, das Fill -Vorgang wird normalerweise nur Spaltennamen-Metadaten erstellt.When you create a DataTable object, the Fill operation ordinarily creates only column name metadata. Aber wenn die MissingSchemaAction -Eigenschaftensatz auf AddWithKey, entsprechenden primären Schlüsseln und Einschränkungen werden auch erstellt.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Sie können die Fill -Methode mehrere Male auf der gleichen DataTable.You can use the Fill method multiple times on the same DataTable. Wenn ein Primärschlüssel vorhanden ist, werden die eingehende Zeilen mit übereinstimmenden Zeilen zusammengeführt, die bereits vorhanden.If a primary key exists, incoming rows are merged with matching rows that already exist. Wenn kein Primärschlüssel vorhanden ist, werden eingehende Zeilen an angehängt der DataTable.If no primary key exists, incoming rows are appended to the DataTable. Wenn ein Primärschlüssel vorhanden ist, alle doppelten Zeilen sind abgestimmt und nur einmal in der DataTable , entspricht die DataSet.If primary key information is present, any duplicate rows are reconciled and only appear one time in the DataTable that corresponds to the DataSet. Primärschlüsselinformationen kann festgelegt werden, entweder durch FillSchema, durch Angabe der PrimaryKey Eigenschaft der DataTable, oder durch Festlegen der MissingSchemaAction Eigenschaft AddWithKey.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.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Sie müssen explizit definieren, dass den Primärschlüssel, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden.You must explicitly define the primary key to make sure that duplicate rows are resolved correctly. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.For more information, see Defining Primary Keys.

Mit dem .NET Framework-Datenanbieter für OLE DB ordnungsgemäß AddWithKey erfordert, dass der systemeigene OLE DB-Anbieter erforderlichen Primärschlüsselinformationen durch Festlegen der DBPROP_UNIQUEROWS-Eigenschaft abgerufen, und bestimmt dann, welche Spalten um Primärschlüssel sind Spalten für eine der IColumnsRowset.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. Alternativ kann der Benutzer explizit die primary Key-Einschränkungen auf den einzelnen festgelegt DataTable.Alternatively the user may explicitly set the primary key constraints on each DataTable. Dadurch wird sichergestellt, dass eingehende Datensätze, die vorhandenen Datensätzen entsprechende Datensätze nicht aktualisiert werden angefügt.This makes sure that incoming records that match existing records are updated instead of appended.

Wenn die OleDbDataAdapter auf trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1", "Columnname2", "Columnname3", und So weiter.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. Leere Spaltennamen werden hinzugefügt, um die DataTable, verwenden eine leere Zeichenfolge für die erste Spalte, gefolgt von "1", "2", "3" usw. für nachfolgenden leeren Spalten.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.

Werte in ADO Recordset oder Record Objekte sind in common Language Runtime-Typen für die Speicherung in der DataSet.Values in ADO Recordset or Record objects are converted to common language runtime types for storage in the DataSet.

Achtung

Diese Überladung von der Fill Methode wird nicht implizit aufgerufen Close für das ADO-Objekt, wenn der Füllvorgang abgeschlossen ist.This overload of the Fill method does not implicitly call Close on the ADO object when the fill operation is complete. Rufen Sie daher immer Close Sie abschließend mithilfe von ADO Recordset oder Record Objekte.Therefore, always call Close when you are finished using ADO Recordset or Record objects. Dadurch wird sichergestellt, dass die zugrunde liegende Verbindung mit einer Datenquelle rechtzeitig veröffentlicht wird, und verhindert auch, mögliche zugriffsverletzungen aufgrund von nicht verwalteten ADO-Objekte, die dass bei der noch vorhandenen Verweise vorhanden sind. durch die Garbagecollection freigegeben.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.

Beim Aufrufen der TableMappings.Add Methode für eine DataAdapter und der Quellparameter für die Tabelle explizit auf eine leere Zeichenfolge zuordnen, Füllen des Datasets erfolgreich mithilfe der Quelltabelle, aber das Dataset wird mit "nothing" aufgefüllt.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. Im folgenden Beispiel, z. B. rDataSet wird mit "nothing" aufgefüllt.For example, in the following example, rDataSet will be populated with nothing.

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

Dieses Beispiel zeigt, wie Sie ein Ergebnis beim Umgang mit mehreren Ergebnissen überspringen können.This example shows how you can skip a result when dealing with multiple results.

Im folgenden Beispiel wird ein OleDbDataAdapter zum Füllen einer DataTable mit einer ADO Recordset.The following example uses an OleDbDataAdapter to fill a DataTable using an ADO Recordset. In diesem Beispiel wird davon ausgegangen, dass Sie ein ADO erstellt haben 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();  
Siehe auch

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

Aktualisiert Zeilen im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in einem ADO-Recordset-Objekt oder einem ADO-Record-Objekt herzustellen, wobei das angegebene DataSet, das angegebene ADO-Objekt und der angegebene Quelltabellenname verwendet werden.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

Parameter

dataSet
DataSet DataSet DataSet

Ein DataSet, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt werden soll.A DataSet to fill with records and, if it is required, schema.

ADODBRecordSet
Object Object Object

Ein ADO-Recordset-Objekt oder ein ADO-Record-Objekt.An ADO Recordset or Record object.

srcTable
String String String

Die Quelltabelle für die Tabellenzuordnungen.The source table used for the table mappings.

Gibt zurück

Die Anzahl der Zeilen, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden.The number of rows successfully added to or refreshed in the DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.This does not include rows affected by statements that do not return rows.

Ausnahmen

Die Quelltabelle ist ungültig.The source table is invalid.

Hinweise

Die Verknüpfung zwischen ActiveX Data Objects (ADO) und ADO.NET ist ein unidirektionaler Vorgang, zum Kopieren von Daten über ADO, um die DataSet, aber alle Updates der Daten müssen vom ADO.NET behandelt werden.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.

Die Fill Methode durchläuft die mehrere Ergebnisse durch Aufrufen der NextRecordset Methode für die Recordset, schließen die Eingabe Recordset nach Abschluss des der Fill Vorgang.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.

Die Fill Vorgang fügt die Zeilen in das angegebene Ziel DataTable -Objekt in der DataSet, wodurch die DataTable Objekt, wenn es nicht bereits vorhanden ist.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. Bei der Erstellung einer DataTable -Objekt, das Fill -Vorgang wird normalerweise nur Spaltennamen-Metadaten erstellt.When you create a DataTable object, the Fill operation ordinarily creates only column name metadata. Aber wenn die MissingSchemaAction -Eigenschaftensatz auf AddWithKey, entsprechenden primären Schlüsseln und Einschränkungen werden auch erstellt.However, if the MissingSchemaAction property is set to AddWithKey, appropriate primary keys and constraints are also created.

Wenn ein Primärschlüssel vorhanden ist, alle doppelten Zeilen sind abgestimmt und nur einmal in der DataTable , entspricht die DataSet.If primary key information is present, any duplicate rows are reconciled and only appear one time in the DataTable that corresponds to the DataSet. Primärschlüsselinformationen kann festgelegt werden, entweder durch FillSchema, durch Angabe der PrimaryKey Eigenschaft der DataTable, oder durch Festlegen der MissingSchemaAction Eigenschaft AddWithKey.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.

Mit dem .NET Framework-Datenanbieter für OLE DB ordnungsgemäß AddWithKey ist der native OLE DB-Anbieters zum Abrufen der erforderlichen Primärschlüsselinformationen durch Festlegen der DBPROP_UNIQUEROWS-Eigenschaft und dann bestimmen, welche Spalten um Primärschlüssel sind erforderlich Spalten für eine der 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. Alternativ kann der Benutzer explizit die primary Key-Einschränkungen auf den einzelnen festgelegt DataTable.Alternatively the user may explicitly set the primary key constraints on each DataTable. Dadurch wird sichergestellt, dass eingehende, vorhandenen Datensätzen entsprechende Datensätze nicht angefügt, sondern aktualisiert werden.This ensures that incoming records that match existing records are updated instead of appended.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt.If the SelectCommand returns the results of an OUTER JOIN, the DataAdapter does not set a PrimaryKey value for the resulting DataTable. Sie müssen explizit definieren, dass den Primärschlüssel, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden.You must explicitly define the primary key to make sure that duplicate rows are resolved correctly. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.For more information, see Defining Primary Keys.

Wenn die Recordset wird geschlossen, bevor Sie das Starten der Fill Vorgang, tritt kein Fehler.If the Recordset is closed before the starting of the Fill operation, no error results. Dies ist erforderlich, für die Behandlung der mehrere Ergebnisse, da es sich bei Abfragen, die keine Zeilen zurückgeben angegeben werden durch ein geschlossenes Recordset.This is required for handling of multiple results, because queries that do not return rows are indicated by a closed Recordset. Die OleDbDataAdapter ruft nur NextRecordset auf geschlossenen Recordset und setzt die Verarbeitung fort.The OleDbDataAdapter just calls NextRecordset on the closed Recordset and continues processing.

Wenn ein beim Auffüllen des DataSet Fehler ist, vor dem Auftreten des Fehlers hinzugefügte Zeilen bleiben die DataSet.If an error is encountered while populating the data set, rows added before the occurrence of the error remain in the DataSet. Der Rest des Vorgangs wird abgebrochen.The rest of the operation is aborted.

Wenn die DbDataAdapter Objekt trifft doppelte Spalten beim Auffüllen einer DataTable, generiert er Namen für die nachfolgenden Spalten, die mit dem Muster "Columnname1","Columnname2", " Columnname3", und So weiter.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. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.If the incoming data contains unnamed columns, they are placed in the DataSet according to the pattern "Column1", "Column2", and so on. Wenn mehrere Resultsets hinzugefügt werden, um die DataSet jedes Resultset in einer separaten Tabelle platziert wird.When multiple result sets are added to the DataSet each result set is placed in a separate table. Zusätzliche Resultsets werden mit dem Namen durch Anhängen von ganzzahligen Werten auf dem angegebenen Tabellennamen (beispielsweise "Table", "Table1", "Table2" und So weiter.).Additional result sets are named by appending integral values to the specified table name (for example, "Table", "Table1", "Table2", and so on.). Anwendungen, die Spalten- und Tabellennamen verwenden sollten sicherstellen, dass es sich bei verursacht einen Konflikt mit dem folgenden Benennungsmuster erfolgt nicht.Applications that use column and table names should make sure that conflicts with these naming patterns does not occur.

Werte in ADO Recordset oder Record Objekte sind in common Language Runtime-Typen für die Speicherung in der DataSet.Values in ADO Recordset or Record objects are converted to common language runtime types for storage in the DataSet.

Hinweis

Diese Überladung von der Fill -Methode ruft implizit Close für das ADO-Objekt, wenn der Füllvorgang abgeschlossen ist.This overload of the Fill method implicitly calls Close on the ADO object when the fill operation is complete.

Im folgenden Beispiel wird ein OleDbDataAdapter zum Füllen einer DataSet mit einer ADO Recordset d. h. ein ADO Record Objekt.The following example uses an OleDbDataAdapter to fill a DataSet using an ADO Recordset that is an ADO Record object. In diesem Beispiel wird davon ausgegangen, dass Sie ein ADO erstellt haben RecordSet und Record Objekt.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();  
Siehe auch

Gilt für: