Freigeben über


DbDataAdapter.Fill Methode

Definition

Füllt ein DataSet oder ein DataTable.

Überlädt

Name Beschreibung
Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Fügt Zeilen in einem angegebenen Bereich in einem DataSet angegebenen Bereich hinzu oder aktualisiert sie, um die Zeilen in der Datenquelle mit den Namen und den DataSet Quelltabellennamen, Befehlszeichenfolgen und Befehlsverhalten abzugleichen.

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Fügt Zeilen in einem angegebenen Bereich in DataSet einem angegebenen Bereich hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den Namen und DataTable den DataSet Zeilen in der Datenquelle übereinzustimmen.

Fill(DataSet, String, IDataReader, Int32, Int32)

Fügt Zeilen in einem angegebenen Bereich in einem DataSet angegebenen Bereich hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den DataSetDataTableNamen und den IDataReader betreffenden Zeilen in der Datenquelle übereinzustimmen.

Fill(DataSet, Int32, Int32, String)

Fügt Zeilen in einem angegebenen Bereich in DataSet einem angegebenen Bereich hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den Namen und DataTable den DataSet Zeilen in der Datenquelle übereinzustimmen.

Fill(Int32, Int32, DataTable[])

Fügt Zeilen in einem oder DataTable mehreren Objekten hinzu oder aktualisiert sie, um mit denen in der Datenquelle ab dem angegebenen Datensatz übereinzustimmen und bis zur angegebenen maximalen Anzahl von Datensätzen abzurufen.

Fill(DataTable)

Fügt Zeilen in einem angegebenen Bereich in einem DataSet angegebenen Bereich hinzu oder aktualisiert sie, um die Zeilen in der Datenquelle mit dem DataTable Namen abzugleichen.

Fill(DataTable, IDataReader)

Fügt Zeilen in einer DataTable Zeile hinzu, die mit den angegebenen DataTable Und IDataReader Namen in der Datenquelle übereinstimmen sollen, oder aktualisiert sie.

Fill(DataSet, String)

Fügt Zeilen in der DataSet Datenquelle hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den DataSet Und DataTable Namen übereinzustimmen.

Fill(DataSet)

Fügt Zeilen in der DataSetDatei hinzu oder aktualisiert sie.

Fill(DataTable, IDbCommand, CommandBehavior)

Fügt Zeilen in einer Zeile DataTable hinzu, die mit den Zeilen in der Datenquelle mit dem angegebenen und dem Angegebenen DataTableübereinstimmen sollen, IDbCommand oder CommandBehavioraktualisiert sie.

Fill(DataSet, Int32, Int32, String, IDbCommand, CommandBehavior)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in einem angegebenen Bereich in einem DataSet angegebenen Bereich hinzu oder aktualisiert sie, um die Zeilen in der Datenquelle mit den Namen und den DataSet Quelltabellennamen, Befehlszeichenfolgen und Befehlsverhalten abzugleichen.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill(System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataSet * int * int * string * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String, command As IDbCommand, behavior As CommandBehavior) As Integer

Parameter

dataSet
DataSet

A DataSet zum Ausfüllen von Datensätzen und bei Bedarf schema.

startRecord
Int32

Die nullbasierte Datensatznummer, mit der begonnen werden soll.

maxRecords
Int32

Die maximale Anzahl der abzurufenden Datensätze. Geben Sie 0 an, um alle Datensätze nach dem Startdatensatz abzurufen.

srcTable
String

Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll.

command
IDbCommand

Die SQL SELECT-Anweisung, die zum Abrufen von Zeilen aus der Datenquelle verwendet wird.

behavior
CommandBehavior

Einer der CommandBehavior Werte.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

Die Quelltabelle ist ungültig.

Der startRecord Parameter ist kleiner als 0.

- oder -

Der maxRecords Parameter ist kleiner als 0.

Hinweise

Der maxRecords Wert 0 ruft alle Datensätze ab, die nach dem Startdatensatz gefunden wurden. Wenn maxRecords die Anzahl der verbleibenden Zeilen größer ist, werden nur die verbleibenden Zeilen zurückgegeben, und es wird kein Fehler ausgegeben.

Die Fill Methode ruft Zeilen aus der Datenquelle mithilfe der SELECT-Anweisung ab, die durch eine zugeordnete SelectCommand Eigenschaft angegeben wird. Das mit der SELECT-Anweisung verknüpfte Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt dann die Zeilen zu Zielobjekten DataTable im DataSetObjekt hinzu, wodurch die DataTable Objekte erstellt werden, sofern sie noch nicht vorhanden sind. Beim Erstellen von DataTable Objekten erstellt der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction Eigenschaft jedoch auf AddWithKey festgelegt ist, werden auch geeignete Primärschlüssel und Einschränkungen erstellt.

Wenn beim DbDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Die Fill Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, Fill um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wird Fill aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Sie können die Fill Methode mehrmals auf demselben DataTableVerwenden. Wenn ein Primärschlüssel vorhanden ist, werden eingehende Zeilen mit übereinstimmenden Zeilen zusammengeführt, die bereits vorhanden sind. Wenn kein Primärschlüssel vorhanden ist, werden eingehende Zeilen an die DataTable.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung und FillFillSchema für einen .NET Framework-Datenanbieter Schemainformationen nur für das erste Ergebnis ab.

Hinweise für Vererber

Diese Überladung der Fill(DataSet) Methode ist geschützt und wurde für die Verwendung durch einen .NET Framework-Datenanbieter entwickelt.

Weitere Informationen

Gilt für:

Fill(DataTable[], Int32, Int32, IDbCommand, CommandBehavior)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in einem angegebenen Bereich in DataSet einem angegebenen Bereich hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den Namen und DataTable den DataSet Zeilen in der Datenquelle übereinzustimmen.

protected:
 virtual int Fill(cli::array <System::Data::DataTable ^> ^ dataTables, int startRecord, int maxRecords, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill(System.Data.DataTable[] dataTables, int startRecord, int maxRecords, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable[] * int * int * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTables As DataTable(), startRecord As Integer, maxRecords As Integer, command As IDbCommand, behavior As CommandBehavior) As Integer

Parameter

dataTables
DataTable[]

Die DataTable Objekte, die aus der Datenquelle ausgefüllt werden sollen.

startRecord
Int32

Die nullbasierte Datensatznummer, mit der begonnen werden soll.

maxRecords
Int32

Die maximale Anzahl der abzurufenden Datensätze. Geben Sie 0 an, um alle Datensätze nach dem Startdatensatz abzurufen.

command
IDbCommand

Wird IDbCommand ausgeführt, um die DataTable Objekte auszufüllen.

behavior
CommandBehavior

Einer der CommandBehavior Werte.

Gibt zurück

Die Anzahl der Zeilen, die in den Datentabellen hinzugefügt oder aktualisiert werden.

Ausnahmen

Dies DataSet ist ungültig.

Die Quelltabelle ist ungültig.

- oder -

Die Verbindung ist ungültig.

Die Verbindung konnte nicht gefunden werden.

Der startRecord Parameter ist kleiner als 0.

- oder -

Der maxRecords Parameter ist kleiner als 0.

Hinweise

Der maxRecords Wert 0 ruft alle Datensätze ab, die nach dem Startdatensatz gefunden wurden. Wenn maxRecords die Anzahl der verbleibenden Zeilen größer ist, werden nur die verbleibenden Zeilen zurückgegeben, und es wird kein Fehler ausgegeben.

Die Fill Methode ruft die Daten aus der Datenquelle mithilfe einer SELECT-Anweisung ab. Das IDbConnection der SELECT-Anweisung zugeordnete Objekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die IDbConnection Datei vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Wenn ein Befehl keine Zeilen zurückgibt, werden der Tabelle keine Tabellen hinzugefügt DataSet, es wird jedoch keine Ausnahme ausgelöst.

Wenn das DbDataAdapter Objekt beim Auffüllen doppelter DataTableSpalten auftritt, generiert es Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird jeder Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wenn Sie eine Einfügeabfrage, gefolgt von einer Auswahlabfrage, verarbeiten würden, würde die für die Auswahlabfrage erstellte Tabelle den Namen "Tabelle" haben, da sie die erste erstellte Tabelle ist. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Die Fill Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, Fill um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wird Fill aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wenn beim Auffüllen der Datentabellen ein Fehler oder eine Ausnahme auftritt, verbleiben zeilen, die vor dem Auftreten des Fehlers in den Datentabellen hinzugefügt wurden. Der Rest des Vorgangs wird abgebrochen.

Wenn die SELECT-Anweisung zum Auffüllen der DataTable Objekte mehrere Ergebnisse zurückgibt, z. B. eine SQL-Anweisung im Batch, beachten Sie Folgendes:

  • Wenn Mehrere Ergebnisse aus einer SQL-Batch-Anweisung verarbeitet werden, maxRecords gilt nur für das erste Ergebnis. Dasselbe gilt für Zeilen mit kapitelierten Ergebnissen (nur .NET Framework-Datenanbieter für OLE DB). Das Ergebnis der obersten Ebene ist durch maxRecordsbeschränkt, aber alle untergeordneten Zeilen werden hinzugefügt.

  • Wenn eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen.

Hinweis

Dies DataSet enthält nicht mehr als die Anzahl von Datensätzen, die durch maxRecords. Das gesamte ergebniset, das von der Abfrage generiert wird, wird jedoch weiterhin vom Server zurückgegeben.

Hinweise für Vererber

Achten Sie beim Überschreiben Fill(DataSet) in einer abgeleiteten Klasse darauf, die Methode der Basisklasse Fill(DataSet) aufzurufen.

Weitere Informationen

Gilt für:

Fill(DataSet, String, IDataReader, Int32, Int32)

Fügt Zeilen in einem angegebenen Bereich in einem DataSet angegebenen Bereich hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den DataSetDataTableNamen und den IDataReader betreffenden Zeilen in der Datenquelle übereinzustimmen.

protected:
 virtual int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable, System::Data::IDataReader ^ dataReader, int startRecord, int maxRecords);
protected virtual int Fill(System.Data.DataSet dataSet, string srcTable, System.Data.IDataReader dataReader, int startRecord, int maxRecords);
override this.Fill : System.Data.DataSet * string * System.Data.IDataReader * int * int -> int
Protected Overridable Function Fill (dataSet As DataSet, srcTable As String, dataReader As IDataReader, startRecord As Integer, maxRecords As Integer) As Integer

Parameter

dataSet
DataSet

A DataSet zum Ausfüllen von Datensätzen und bei Bedarf schema.

srcTable
String

Der Name des DataTable für die Tabellenzuordnung zu verwendenden.

dataReader
IDataReader

Der Name des IDataReader.

startRecord
Int32

Die nullbasierte Datensatznummer, mit der begonnen werden soll.

maxRecords
Int32

Die maximale Anzahl der abzurufenden Datensätze. Geben Sie 0 an, um alle Datensätze nach dem Startdatensatz abzurufen.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

startRecord ist kleiner als 0.

- oder -

maxRecords ist kleiner als 0.

Hinweise

Der maxRecords Wert 0 ruft alle Datensätze ab, die nach dem Startdatensatz gefunden wurden. Wenn maxRecords die Anzahl der verbleibenden Zeilen größer ist, werden nur die verbleibenden Zeilen zurückgegeben, und es wird kein Fehler ausgegeben.

Gilt für:

Fill(DataSet, Int32, Int32, String)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in einem angegebenen Bereich in DataSet einem angegebenen Bereich hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den Namen und DataTable den DataSet Zeilen in der Datenquelle übereinzustimmen.

public:
 int Fill(System::Data::DataSet ^ dataSet, int startRecord, int maxRecords, System::String ^ srcTable);
public int Fill(System.Data.DataSet dataSet, int startRecord, int maxRecords, string srcTable);
override this.Fill : System.Data.DataSet * int * int * string -> int
Public Function Fill (dataSet As DataSet, startRecord As Integer, maxRecords As Integer, srcTable As String) As Integer

Parameter

dataSet
DataSet

A DataSet zum Ausfüllen von Datensätzen und bei Bedarf schema.

startRecord
Int32

Die nullbasierte Datensatznummer, mit der begonnen werden soll.

maxRecords
Int32

Die maximale Anzahl der abzurufenden Datensätze. Geben Sie 0 an, um alle Datensätze nach dem Startdatensatz abzurufen.

srcTable
String

Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

Dies DataSet ist ungültig.

Die Quelltabelle ist ungültig.

- oder -

Die Verbindung ist ungültig.

Die Verbindung konnte nicht gefunden werden.

Der startRecord Parameter ist kleiner als 0.

- oder -

Der maxRecords Parameter ist kleiner als 0.

Beispiele

Im folgenden Beispiel wird die abgeleitete Klasse verwendet, OleDbDataAdapterum eine DataSet mit 15 Zeilen beginnende Zeile 10 aus der Tabelle " Kategorien " auszufüllen. In diesem Beispiel wird davon ausgegangen, dass Sie ein OleDbDataAdapter und ein DataSet.

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet,9,15,"Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, 9, 15, "Categories")
End Sub

Hinweise

Der maxRecords Wert 0 ruft alle Datensätze ab, die nach dem Startdatensatz gefunden wurden. Wenn maxRecords die Anzahl der verbleibenden Zeilen größer ist, werden nur die verbleibenden Zeilen zurückgegeben, und es wird kein Fehler ausgegeben.

Wenn der entsprechende Auswahlbefehl eine Anweisung ist, die mehrere Ergebnisse zurückgibt, Fill gilt nur für maxRecords das erste Ergebnis.

Die Fill Methode ruft die Daten aus der Datenquelle mithilfe einer SELECT-Anweisung ab. Das IDbConnection der SELECT-Anweisung zugeordnete Objekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die Datei IDbConnection vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen und dann zu schließen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Wenn ein Befehl keine Zeilen zurückgibt, werden der Tabelle keine Tabellen hinzugefügt DataSet, es wird jedoch keine Ausnahme ausgelöst.

Wenn das DbDataAdapter Objekt beim Auffüllen doppelter DataTableSpalten auftritt, generiert es Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird jeder Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wird beim Verarbeiten einer Einfügeabfrage gefolgt von einer Auswahlabfrage die für die Auswahlabfrage erstellte Tabelle mit dem Namen "Tabelle" bezeichnet, da sie die erste erstellte Tabelle ist. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Die Fill Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, Fill um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wird Fill aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wenn beim Auffüllen der Datentabellen ein Fehler oder eine Ausnahme auftritt, verbleiben zeilen, die vor dem Auftreten des Fehlers in den Datentabellen hinzugefügt wurden. Der Rest des Vorgangs wird abgebrochen.

Beachten Sie Folgendes, wenn die SELECT-Anweisung zum Auffüllen mehrerer DataSet Ergebnisse verwendet wird, z. B. SQL-Batchanweisungen:

  • Wenn Mehrere Ergebnisse aus einer SQL-Batch-Anweisung verarbeitet werden, maxRecords gilt nur für das erste Ergebnis. Dasselbe gilt für Zeilen mit kapitelierten Ergebnissen (nur .NET Framework-Datenanbieter für OLE DB). Das Ergebnis der obersten Ebene ist begrenzt durch maxRecords, aber alle untergeordneten Zeilen werden hinzugefügt.

  • Wenn eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und nicht dem DataSet.

Wenn Sie nachfolgende Aufrufe Fill verwenden, um den Inhalt der DataSetDatei zu aktualisieren, müssen zwei Bedingungen erfüllt sein:

  1. Die SQL-Anweisung sollte mit der ursprünglich zum Auffüllen der DataSetSql-Anweisung verwendeten übereinstimmen.

  2. Die Schlüsselspalteninformationen müssen vorhanden sein.

Wenn Primärschlüsselinformationen vorhanden sind, werden alle doppelten Zeilen abgeglichen und nur einmal angezeigt, die DataTable dem Entsprechenden entsprechen DataSet. Primärschlüsselinformationen können entweder über FillSchema, durch Angabe der PrimaryKey Eigenschaft des DataTableSchlüssels oder durch Festlegen der MissingSchemaAction Eigenschaft auf AddWithKey.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.

Hinweis

Dies DataSet enthält nicht mehr als die Anzahl von Datensätzen, die durch maxRecords. Das gesamte von der Abfrage generierte Resultset wird jedoch weiterhin vom Server zurückgegeben.

Hinweise für Vererber

Achten Sie beim Überschreiben Fill(DataSet) in einer abgeleiteten Klasse darauf, die Methode der Basisklasse Fill(DataSet) aufzurufen.

Weitere Informationen

Gilt für:

Fill(Int32, Int32, DataTable[])

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in einem oder DataTable mehreren Objekten hinzu oder aktualisiert sie, um mit denen in der Datenquelle ab dem angegebenen Datensatz übereinzustimmen und bis zur angegebenen maximalen Anzahl von Datensätzen abzurufen.

public:
 int Fill(int startRecord, int maxRecords, ... cli::array <System::Data::DataTable ^> ^ dataTables);
public int Fill(int startRecord, int maxRecords, params System.Data.DataTable[] dataTables);
override this.Fill : int * int * System.Data.DataTable[] -> int
Public Function Fill (startRecord As Integer, maxRecords As Integer, ParamArray dataTables As DataTable()) As Integer

Parameter

startRecord
Int32

Die nullbasierte Datensatznummer, mit der begonnen werden soll.

maxRecords
Int32

Die maximale Anzahl der abzurufenden Datensätze. Geben Sie 0 an, um alle Datensätze nach dem Startdatensatz abzurufen.

dataTables
DataTable[]

Die DataTable Objekte, die aus der Datenquelle ausgefüllt werden sollen.

Gibt zurück

Die Anzahl der Zeilen, die den DataTable Objekten erfolgreich hinzugefügt oder aktualisiert wurden. Dieser Wert enthält keine Zeilen, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

dataTables ist null oder ein leeres Array.

startRecord ist kleiner als 0.

- oder -

maxRecords ist kleiner als 0.

Hinweise

Der maxRecords Wert 0 ruft alle Datensätze ab, die nach dem Startdatensatz gefunden wurden. Wenn maxRecords die Anzahl der verbleibenden Zeilen größer ist, werden nur die verbleibenden Zeilen zurückgegeben, und es wird kein Fehler ausgegeben.

Die Fill Methode ruft Zeilen aus der Datenquelle mithilfe der SELECT-Anweisung ab, die durch eine zugeordnete SelectCommand Eigenschaft angegeben wird. Das mit der SELECT-Anweisung verknüpfte Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung vor dem Fill Aufruf geschlossen wird, wird sie zum Abrufen von Daten geöffnet und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt dann die Zeilen zu Zielobjekten DataTable im DataSetObjekt hinzu, wodurch die DataTable Objekte erstellt werden, sofern sie noch nicht vorhanden sind. Beim Erstellen von DataTable Objekten erstellt der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction Eigenschaft jedoch auf AddWithKey festgelegt ist, werden auch geeignete Primärschlüssel und Einschränkungen erstellt.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Wenn der Datenadapter beim Auffüllen doppelter DataTableSpalten auftritt, generiert er Namen für die nachfolgenden Spalten, wobei das Muster "Columnname1", "columnname2", "columnname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem Ergebnissatz mehrere Resultsets hinzugefügt DataSetwerden, wird jeder Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Wenn die SELECT-Anweisung verwendet wird, um die DataSet zurückgegebenen ergebnisse zu füllen, z. B. eine SQL-Batch-Anweisung, wenn eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und nicht hinzugefügt DataSet.

Sie können die Fill Methode mehrmals auf demselben DataTableVerwenden. Wenn ein Primärschlüssel vorhanden ist, werden eingehende Zeilen mit übereinstimmenden Zeilen zusammengeführt, die bereits vorhanden sind. Wenn kein Primärschlüssel vorhanden ist, werden eingehende Zeilen an die DataTable.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.

Weitere Informationen

Gilt für:

Fill(DataTable)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in einem angegebenen Bereich in einem DataSet angegebenen Bereich hinzu oder aktualisiert sie, um die Zeilen in der Datenquelle mit dem DataTable Namen abzugleichen.

public:
 int Fill(System::Data::DataTable ^ dataTable);
public int Fill(System.Data.DataTable dataTable);
override this.Fill : System.Data.DataTable -> int
Public Function Fill (dataTable As DataTable) As Integer

Parameter

dataTable
DataTable

Der Name des DataTable für die Tabellenzuordnung zu verwendenden.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

Die Quelltabelle ist ungültig.

Hinweise

Die Fill Methode ruft Zeilen aus der Datenquelle mithilfe der SELECT-Anweisung ab, die durch eine zugeordnete SelectCommand Eigenschaft angegeben wird. Das mit der SELECT-Anweisung verknüpfte Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt dann die Zeilen zu Zielobjekten DataTable im DataSetObjekt hinzu, wodurch die DataTable Objekte erstellt werden, sofern sie noch nicht vorhanden sind. Beim Erstellen von DataTable Objekten erstellt der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction Eigenschaft jedoch auf AddWithKey festgelegt ist, werden auch geeignete Primärschlüssel und Einschränkungen erstellt.

Wenn beim DbDataAdapter Auffüllen doppelter DataTableSpalten doppelte Spalten auftreten, generiert sie Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt. Wenn dem resultset mehrere Resultsets hinzugefügt DataSet werden, wird in einer separaten Tabelle platziert.

Die Überladung, die Fill als Parameter verwendet DataTable wird, ruft nur das erste Ergebnis ab. Verwenden Sie eine Überladung, die Fill als Parameter verwendet DataSet wird, um mehrere Ergebnisse zu erhalten.

Die Fill Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, Fill um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wird Fill aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Sie können die Fill Methode mehrmals auf demselben DataTableVerwenden. Wenn ein Primärschlüssel vorhanden ist, werden eingehende Zeilen mit übereinstimmenden Zeilen zusammengeführt, die bereits vorhanden sind. Wenn kein Primärschlüssel vorhanden ist, werden eingehende Zeilen an die DataTable.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung und FillFillSchema für einen .NET Framework-Datenanbieter Schemainformationen nur für das erste Ergebnis ab.

Hinweise für Vererber

Diese Überladung der Fill(DataSet) Methode ist geschützt und wurde für die Verwendung durch einen .NET Framework-Datenanbieter entwickelt.

Weitere Informationen

Gilt für:

Fill(DataTable, IDataReader)

Fügt Zeilen in einer DataTable Zeile hinzu, die mit den angegebenen DataTable Und IDataReader Namen in der Datenquelle übereinstimmen sollen, oder aktualisiert sie.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDataReader ^ dataReader);
protected virtual int Fill(System.Data.DataTable dataTable, System.Data.IDataReader dataReader);
override this.Fill : System.Data.DataTable * System.Data.IDataReader -> int
Protected Overridable Function Fill (dataTable As DataTable, dataReader As IDataReader) As Integer

Parameter

dataTable
DataTable

A DataTable zum Ausfüllen von Datensätzen und bei Bedarf schema.

dataReader
IDataReader

Der Name des IDataReader.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataTable. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Gilt für:

Fill(DataSet, String)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in der DataSet Datenquelle hinzu oder aktualisiert sie, um mit den Zeilen in der Datenquelle mit den DataSet Und DataTable Namen übereinzustimmen.

public:
 int Fill(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Fill(System.Data.DataSet dataSet, string srcTable);
override this.Fill : System.Data.DataSet * string -> int
Public Function Fill (dataSet As DataSet, srcTable As String) As Integer

Parameter

dataSet
DataSet

A DataSet zum Ausfüllen von Datensätzen und bei Bedarf schema.

srcTable
String

Der Name der Quelltabelle, die für die Tabellenzuordnung verwendet werden soll.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

Die Quelltabelle ist ungültig.

Beispiele

Im folgenden Beispiel wird die abgeleitete Klasse verwendet, OleDbDataAdapterum eine DataSet Zeile aus der Kategorientabelle auszufüllen. In diesem Beispiel wird davon ausgegangen, dass Sie ein OleDbDataAdapter und ein DataSet.

public void GetRecords()
{
    // ...
    // create dataSet and adapter
    // ...
    adapter.Fill(dataSet, "Categories");
}
Public Sub GetRecords()
    ' ...
    ' create dataSet and adapter
    ' ...
    adapter.Fill(dataSet, "Categories")
End Sub

Hinweise

Die Fill Methode ruft die Daten aus der Datenquelle mithilfe einer SELECT-Anweisung ab. Das IDbConnection dem Auswahlbefehl zugeordnete Objekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die IDbConnection Datei vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Wenn ein Befehl keine Zeilen zurückgibt, werden keine Tabellen hinzugefügt DataSet, und es wird keine Ausnahme ausgelöst.

Wenn das DbDataAdapter Objekt beim Auffüllen doppelter DataTableSpalten auftritt, generiert es Namen für die nachfolgenden Spalten, wobei das Muster "columnname1", "columnname2", "columnname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird jeder Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wenn Sie eine Einfügeabfrage, gefolgt von einer Auswahlabfrage, verarbeiten würden, würde die für die Auswahlabfrage erstellte Tabelle den Namen "Tabelle" haben, da sie die erste erstellte Tabelle ist. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Die Fill Methode unterstützt Szenarien, in denen mehrere DataSet Objekte enthalten DataTable sind, deren Namen nur nach Groß-/Kleinschreibung abweichen. In solchen Situationen führt ein Vergleich zwischen Groß- und Kleinschreibung aus, Fill um die entsprechende Tabelle zu finden, und erstellt eine neue Tabelle, wenn keine genaue Übereinstimmung vorhanden ist. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wird Fill aufgerufen und enthält DataSet nur eine DataTable , deren Name nur nach Groß-/Kleinschreibung unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario wird die Groß-/Kleinschreibung nicht beachtet. Der folgende C#-Code veranschaulicht dieses Verhalten.

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

Wenn beim Auffüllen der Datentabellen ein Fehler oder eine Ausnahme auftritt, verbleiben zeilen, die vor dem Auftreten des Fehlers in den Datentabellen hinzugefügt wurden. Der Rest des Vorgangs wird abgebrochen.

Beachten Sie Folgendes, wenn die SELECT-Anweisung zum Auffüllen mehrerer DataSet Ergebnisse verwendet wird, z. B. eine SQL-Anweisung im Batch:

  • Wenn eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und nicht dem DataSet.

Wenn Sie nachfolgende Aufrufe Fill verwenden, um den Inhalt der DataSetDatei zu aktualisieren, müssen zwei Bedingungen erfüllt sein:

  1. Die SQL-Anweisung sollte mit der ursprünglich zum Auffüllen der DataSetSql-Anweisung verwendeten übereinstimmen.

  2. Die Schlüsselspalteninformationen müssen vorhanden sein. Wenn Primärschlüsselinformationen vorhanden sind, werden alle doppelten Zeilen abgeglichen DataSetund nur einmal angezeigt, die DataTable dem Entsprechenden entsprechen. Primärschlüsselinformationen können entweder über FillSchema, durch Angabe der PrimaryKey Eigenschaft des DataTableSchlüssels oder durch Festlegen der MissingSchemaAction Eigenschaft auf AddWithKey.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.

Hinweise für Vererber

Achten Sie beim Überschreiben Fill(DataSet) in einer abgeleiteten Klasse darauf, die Methode der Basisklasse Fill(DataSet) aufzurufen.

Weitere Informationen

Gilt für:

Fill(DataSet)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in der DataSetDatei hinzu oder aktualisiert sie.

public:
 override int Fill(System::Data::DataSet ^ dataSet);
public override int Fill(System.Data.DataSet dataSet);
override this.Fill : System.Data.DataSet -> int
Public Overrides Function Fill (dataSet As DataSet) As Integer

Parameter

dataSet
DataSet

A DataSet zum Ausfüllen von Datensätzen und bei Bedarf schema.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataSet. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Implementiert

Hinweise

Die Fill Methode ruft die Daten aus der Datenquelle mithilfe einer SELECT-Anweisung ab. Das IDbConnection dem Auswahlbefehl zugeordnete Objekt muss gültig sein, muss jedoch nicht geöffnet sein. Wenn die Datei IDbConnection vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen und dann zu schließen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Wenn beim Auffüllen der Datentabellen ein Fehler oder eine Ausnahme auftritt, verbleiben zeilen, die vor dem Auftreten des Fehlers in den Datentabellen hinzugefügt wurden. Der Rest des Vorgangs wird abgebrochen.

Wenn ein Befehl keine Zeilen zurückgibt, werden keine Tabellen hinzugefügt DataSet, und es wird keine Ausnahme ausgelöst.

Wenn das DbDataAdapter Objekt beim Auffüllen doppelter DataTableSpalten auftritt, generiert es Namen für die nachfolgenden Spalten unter Verwendung des Musters "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird das Resultset für jede Zeilenrückgabeabfrage in einer separaten Tabelle platziert. Zusätzliche Resultsets werden durch Anfügen integraler Werte an den angegebenen Tabellennamen benannt (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.). Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wird beim Verarbeiten einer Einfügeabfrage gefolgt von einer Auswahlabfrage die für die Auswahlabfrage erstellte Tabelle mit dem Namen "Tabelle" bezeichnet, da sie die erste erstellte Tabelle ist. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Wenn die SELECT-Anweisung zum Auffüllen mehrerer DataSet Ergebnisse verwendet wird, z. B. SQL-Anweisungen im Batch, wenn eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und nicht hinzugefügt DataSet.

Wenn Sie nachfolgende Aufrufe Fill verwenden, um den Inhalt der DataSetDatei zu aktualisieren, müssen zwei Bedingungen erfüllt sein:

  1. Die SQL-Anweisung sollte mit der ursprünglich zum Auffüllen der DataSetSql-Anweisung verwendeten übereinstimmen.

  2. Die Schlüsselspalteninformationen müssen vorhanden sein.

Wenn Primärschlüsselinformationen vorhanden sind, werden alle doppelten Zeilen abgeglichen DataSetund nur einmal angezeigt, die DataTable dem Entsprechenden entsprechen. Primärschlüsselinformationen können entweder über FillSchema, durch Angabe der PrimaryKey Eigenschaft des DataTableSchlüssels oder durch Festlegen der MissingSchemaAction Eigenschaft auf AddWithKey.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.

Weitere Informationen

Gilt für:

Fill(DataTable, IDbCommand, CommandBehavior)

Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs
Quelle:
DbDataAdapter.cs

Fügt Zeilen in einer Zeile DataTable hinzu, die mit den Zeilen in der Datenquelle mit dem angegebenen und dem Angegebenen DataTableübereinstimmen sollen, IDbCommand oder CommandBehavioraktualisiert sie.

protected:
 virtual int Fill(System::Data::DataTable ^ dataTable, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual int Fill(System.Data.DataTable dataTable, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.Fill : System.Data.DataTable * System.Data.IDbCommand * System.Data.CommandBehavior -> int
Protected Overridable Function Fill (dataTable As DataTable, command As IDbCommand, behavior As CommandBehavior) As Integer

Parameter

dataTable
DataTable

A DataTable zum Ausfüllen von Datensätzen und bei Bedarf schema.

command
IDbCommand

Die SQL SELECT-Anweisung, die zum Abrufen von Zeilen aus der Datenquelle verwendet wird.

behavior
CommandBehavior

Einer der CommandBehavior Werte.

Gibt zurück

Die Anzahl der Zeilen wurde erfolgreich hinzugefügt oder aktualisiert in der DataTable. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Hinweise

Die Fill Methode ruft Zeilen aus der Datenquelle mithilfe der SELECT-Anweisung ab, die durch eine zugeordnete SelectCommand Eigenschaft angegeben wird. Das mit der SELECT-Anweisung verknüpfte Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung vor dem Fill Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen und dann zu schließen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt dann die Zeilen zum angegebenen Zielobjekt DataTable im DataSetObjekt hinzu, wodurch das DataTable Objekt erstellt wird, wenn es noch nicht vorhanden ist. Beim Erstellen eines DataTable Objekts erstellt der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction Eigenschaft jedoch auf AddWithKey festgelegt ist, werden auch geeignete Primärschlüssel und Einschränkungen erstellt.

Wenn das DbDataAdapter Objekt beim Auffüllen doppelter DataTableSpalten auftritt, generiert es Namen für die nachfolgenden Spalten, wobei das Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie gemäß dem DataSet Muster "Spalte1", "Spalte2" usw. in das Muster eingefügt.

Die Überladung, die Fill als Parameter verwendet DataTable wird, ruft nur das erste Ergebnis ab. Verwenden Sie eine Überladung, die Fill als Parameter verwendet DataSet wird, um mehrere Ergebnisse zu erhalten.

Sie können die Fill Methode mehrmals auf demselben DataTableVerwenden. Wenn ein Primärschlüssel vorhanden ist, werden eingehende Zeilen mit übereinstimmenden Zeilen zusammengeführt, die bereits vorhanden sind. Wenn kein Primärschlüssel vorhanden ist, werden eingehende Zeilen an die DataTable.

Wenn vom SelectCommand die Ergebnisse eines OUTER JOIN zurückgegeben werden, wird vom DataAdapter kein PrimaryKey -Wert für die resultierende DataTablefestgelegt. Sie müssen den Primärschlüssel explizit definieren, um sicherzustellen, dass doppelte Zeilen ordnungsgemäß aufgelöst werden. Weitere Informationen finden Sie unter Definieren von Primärschlüsseln.

Hinweis

Bei der Verarbeitung von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema des .NET Framework-Datenanbieters für OLE DB Schemainformationen nur für das erste Ergebnis ab. Verwenden Sie Fill zum Abrufen von Schemainformationen für mehrere Ergebnisse den MissingSchemaAction Satz auf AddWithKey.

Hinweise für Vererber

Diese Überladung der Fill(DataSet) Methode ist geschützt und wurde für die Verwendung durch einen .NET Framework-Datenanbieter entwickelt.

Weitere Informationen

Gilt für: