DbDataAdapter.Fill Methode

Definition

Füllt ein DataSet oder eine DataTable.

Überlädt

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

Aktualisiert Zeilen in einem angegebenen Bereich im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet, den Namen der Quelltabelle, die Befehlszeichenfolge und das Befehlsverhalten verwenden.

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

Aktualisiert Zeilen in einem angegebenen Bereich des DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet und den Namen der DataTable verwenden.

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

Aktualisiert Zeilen in einem angegebenen Bereich im DataSet oder fügt Zeilen hinzu, um anhand der Namen DataSet, DataTable und IDataReader Übereinstimmung mit den Zeilen in der Datenquelle zu erzielen.

Fill(DataSet, Int32, Int32, String)

Aktualisiert Zeilen in einem angegebenen Bereich des DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet und den Namen der DataTable verwenden.

Fill(Int32, Int32, DataTable[])

Fügt Zeilen in einem oder mehreren Objekten hinzu, DataTable um mit denen in der Datenquelle abzugleichen, beginnend am angegebenen Datensatz und beim Abrufen der angegebenen maximalen Anzahl von Datensätzen.

Fill(DataTable)

Aktualisiert Zeilen in einem angegebenen Bereich des DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den DataTable-Namen verwendet.

Fill(DataTable, IDataReader)

Aktualisiert Zeilen in einer DataTable oder fügt Zeilen hinzu, um anhand der angegebenen Namen DataTable und IDataReader Übereinstimmung mit den Zeilen in der Datenquelle zu erzielen.

Fill(DataSet, String)

Aktualisiert Zeilen im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet und den Namen der DataTable verwenden.

Fill(DataSet)

Fügt Zeilen in DataSet hinzu oder aktualisiert diese.

Fill(DataTable, IDbCommand, CommandBehavior)

Aktualisiert Zeilen in einer DataTable oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, wobei die angegebenen Werte für DataTable, IDbCommand und CommandBehavior verwendet werden.

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

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

Aktualisiert Zeilen in einem angegebenen Bereich im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet, den Namen der Quelltabelle, die Befehlszeichenfolge und das Befehlsverhalten verwenden.

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

Ein DataSet, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

startRecord
Int32

Die nullbasierte Datensatznummer, bei der begonnen wird.

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, mit der Zeilen aus der Datenquelle abgerufen werden.

behavior
CommandBehavior

Einer der CommandBehavior-Werte.

Gibt zurück

Die Anzahl der Zeilen, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden. 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 größer als die Anzahl der verbleibenden Zeilen 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 von einer zugeordneten SelectCommand Eigenschaft angegeben wird. Das der SELECT-Anweisung zugeordnete Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung geschlossen wird, bevor Fill aufgerufen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt dann die Zeilen den Zielobjekten DataTable in hinzu DataSet, und erstellt die DataTable Objekte, wenn sie noch nicht vorhanden sind. Beim Erstellen von DataTable Objekten erstellt der Fill Vorgang normalerweise nur Metadaten für Spaltennamen. Wenn die MissingSchemaAction -Eigenschaft jedoch auf AddWithKeyfestgelegt ist, werden auch entsprechende Primärschlüssel und Einschränkungen erstellt.

Wenn doppelte DbDataAdapter Spalten beim Auffüllen eines DataTableauftreten, 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 platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw. Wenn mehrere Resultsets hinzugefügt werden, wird jedes DataSet Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden benannt, indem integrale Werte an den angegebenen Tabellennamen angefügt werden (z. B. "Table", "Table1", "Table2" 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 DataSetDataTable Objekte enthält, deren Namen sich nur nach Groß-/Kleinschreibung unterscheiden. Führt in solchen Situationen einen 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".  

Wenn Fill aufgerufen wird und nur DataSet einen DataTable enthält, dessen Name sich nur nach Groß- und Kleinschreibung unterscheidet, wird dieser DataTable aktualisiert. In diesem Szenario wird beim Vergleich 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 für dieselbe 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 DataTableangefügt.

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 Löschen von Primärschlüsseln.

Hinweis

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

Hinweise für Vererber

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

Weitere Informationen

Gilt für:

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

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

Aktualisiert Zeilen in einem angegebenen Bereich des DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet und den Namen der DataTable verwenden.

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 gefüllt werden sollen.

startRecord
Int32

Die nullbasierte Datensatznummer, bei der begonnen wird.

maxRecords
Int32

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

command
IDbCommand

Der IDbCommand, der ausgeführt wird, um die DataTable-Objekte zu füllen.

behavior
CommandBehavior

Einer der CommandBehavior-Werte.

Gibt zurück

Die Anzahl der Zeilen, die in den Datentabellen hinzugefügt bzw. darin aktualisiert wurden.

Ausnahmen

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 größer als die Anzahl der verbleibenden Zeilen ist, werden nur die verbleibenden Zeilen zurückgegeben, und es wird kein Fehler ausgegeben.

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

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

Wenn das DbDataAdapter Objekt beim Auffüllen eines DataTableauf doppelte Spalten stößt, 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 platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird jedes Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden benannt, indem integrale Werte an den angegebenen Tabellennamen angefügt werden (z. B. "Table", "Table1", "Table2" usw.). Da für eine Abfrage, die keine Zeilen zurückgibt, keine Tabelle erstellt wird, würde die für die Auswahlabfrage erstellte Tabelle "Tabelle" heißen, wenn Sie eine Einfügeabfrage gefolgt von einer Auswahlabfrage verarbeiten würden, da es sich um die erste erstellte Tabelle handelt. 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 DataSetDataTable Objekte enthält, deren Namen sich nur nach Groß-/Kleinschreibung unterscheiden. Führt in solchen Situationen einen 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".  

Wenn Fill aufgerufen wird und nur DataSet einen DataTable enthält, dessen Name sich nur nach Groß- und Kleinschreibung unterscheidet, wird dieser DataTable aktualisiert. In diesem Szenario wird beim Vergleich 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 hinzugefügt wurden, in den Datentabellen. Der Rest des Vorgangs wird abgebrochen.

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

  • Beim Verarbeiten mehrerer Ergebnisse aus einer BATCH-SQL-Anweisung maxRecords gilt nur für das erste Ergebnis. Gleiches gilt für Zeilen, die kapitelweise Ergebnisse enthalten (.NET Framework Datenanbieter nur für OLE DB). Das Ergebnis der obersten Ebene wird durch maxRecordseingeschränkt, aber alle untergeordneten Zeilen werden hinzugefügt.

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

Hinweis

Der DataSet enthält nicht mehr als die Anzahl von Datensätzen, die durch angegeben werden 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(DataSet, String, IDataReader, Int32, Int32)

Aktualisiert Zeilen in einem angegebenen Bereich im DataSet oder fügt Zeilen hinzu, um anhand der Namen DataSet, DataTable und IDataReader Übereinstimmung mit den Zeilen in der Datenquelle zu erzielen.

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

Ein DataSet, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

srcTable
String

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

dataReader
IDataReader

Der Name von IDataReader.

startRecord
Int32

Die nullbasierte Datensatznummer, bei der begonnen wird.

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, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden. 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

Aktualisiert Zeilen in einem angegebenen Bereich des DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet und den Namen der DataTable verwenden.

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

Ein DataSet, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

startRecord
Int32

Die nullbasierte Datensatznummer, bei der begonnen wird.

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, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

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 zu füllen, die bei Zeile 10 beginnen, aus der Tabelle Categories . In diesem Beispiel wird davon ausgegangen, dass Sie ein OleDbDataAdapter und ein DataSeterstellt haben.

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 Select-Befehl eine Anweisung ist, die mehrere Ergebnisse zurückgibt, Fill gilt nur für maxRecords das erste Ergebnis.

Die Fill -Methode ruft die Daten mithilfe einer SELECT-Anweisung aus der Datenquelle ab. Das IDbConnection der SELECT-Anweisung zugeordnete Objekt muss gültig sein, muss aber nicht geöffnet sein. Wenn geschlossen IDbConnection ist, bevor Fill aufgerufen wird, wird es 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, aber es wird keine Ausnahme ausgelöst.

Wenn das DbDataAdapter Objekt beim Auffüllen eines DataTableauf doppelte Spalten stößt, 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 platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird jedes Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden benannt, indem integrale Werte an den angegebenen Tabellennamen angefügt werden (z. B. "Table", "Table1", "Table2" usw.). Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wird die für die Select-Abfrage erstellte Tabelle "Table" genannt, da es sich um die erste erstellte Tabelle handelt. 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 das DataSet mehrere DataTable Objekte enthält, deren Namen sich nur nach Groß- und Kleinschreibung unterscheiden. Führt in solchen Situationen einen Vergleich zwischen Groß- und Kleinschreibung durch, 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".  

Wenn Fill aufgerufen wird und nur einen DataTable enthält, dessen Name sich nur nach Groß- und DataSet Kleinschreibung unterscheidet, wird dies DataTable aktualisiert. In diesem Szenario wird beim Vergleich 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 hinzugefügt wurden, in den Datentabellen. Der Rest des Vorgangs wird abgebrochen.

Wenn die SELECT-Anweisung, die zum Auffüllen verwendet DataSet wird, mehrere Ergebnisse zurückgibt, z. B. BATCH-SQL-Anweisungen, beachten Sie Folgendes:

  • Beim Verarbeiten mehrerer Ergebnisse aus einer BATCH-SQL-Anweisung maxRecords gilt nur für das erste Ergebnis. Gleiches gilt für Zeilen, die kapitelweise Ergebnisse enthalten (.NET Framework Datenanbieter nur für OLE DB). Das Ergebnis der obersten Ebene ist durch maxRecordseingeschränkt, aber alle untergeordneten Zeilen werden hinzugefügt.

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

Wenn Sie nachfolgende Fill Aufrufe zum Aktualisieren des Inhalts verwenden DataSet, müssen zwei Bedingungen erfüllt sein:

  1. Die SQL-Anweisung sollte mit der sql-Anweisung übereinstimmen, die ursprünglich zum Auffüllen von DataSetverwendet wurde.

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

Wenn Primärschlüsselinformationen vorhanden sind, werden alle doppelten Zeilen abgeglichen und nur einmal in der angezeigt, die DataTable dem DataSetentspricht. Primärschlüsselinformationen können entweder über FillSchemafestgelegt werden, indem Sie die PrimaryKey -Eigenschaft von DataTableangeben oder die MissingSchemaAction -Eigenschaft auf AddWithKeyfestlegen.

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 Löschen von Primärschlüsseln.

Hinweis

Beim Behandeln von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung von FillSchema für den .NET Framework Datenanbieter für OLE DB Schemainformationen nur für das erste Ergebnis ab. Um Schemainformationen für mehrere Ergebnisse abzurufen, verwenden Sie Fill mit festgelegt MissingSchemaAction auf AddWithKey.

Hinweis

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

Hinweise für Vererber

Rufen Sie beim Überschreiben Fill(DataSet) in einer abgeleiteten Klasse unbedingt die Methode der Basisklasse Fill(DataSet) auf.

Weitere Informationen

Gilt für:

Fill(Int32, Int32, DataTable[])

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

Fügt Zeilen in einem oder DataTable mehreren Objekten hinzu oder aktualisiert diese, um denen in der Datenquelle zu entsprechen, beginnend mit dem angegebenen Datensatz und dem Abrufen der angegebenen maximalen Anzahl von Datensätzen.

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, bei der begonnen wird.

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 gefüllt werden sollen.

Gibt zurück

Die Anzahl der Zeilen, die DataTable den -Objekten erfolgreich hinzugefügt oder aktualisiert wurden. Dieser Wert schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Ausnahmen

dataTables ist null oder eine 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 der SELECT-Anweisung zugeordnete Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung geschlossen wird, bevor Fill sie aufgerufen wird, wird sie geöffnet, um Daten abzurufen, und dann wird sie geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill sie aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt die Zeilen dann Zielobjekten DataTable in hinzu DataSet, und erstellt die DataTable Objekte, sofern sie noch nicht vorhanden sind. Beim Erstellen von DataTable Objekten erstellt der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction -Eigenschaft jedoch auf AddWithKeyfestgelegt ist, werden auch die entsprechenden 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 Löschen von Primärschlüsseln.

Wenn der Datenadapter beim Auffüllen eines DataTableauf doppelte Spalten stößt, generiert er Namen für die nachfolgenden Spalten unter Verwendung des Musters "columnname1", "columnname2", "columnname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw. Wenn mehrere Resultsets hinzugefügt DataSetwerden, wird jedes Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden benannt, indem integrale Werte an den angegebenen Tabellennamen angefügt werden (z. B. "Table", "Table1", "Table2" usw.). Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Wenn die SELECT-Anweisung, die zum Auffüllen verwendet DataSet wird, mehrere Ergebnisse zurückgibt, z. B. eine BATCH-SQL-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 für dieselbe 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 den DataTableangefügt.

Hinweis

Beim Behandeln von SQL-Batchanweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung von FillSchema für den .NET Framework Datenanbieter für OLE DB Schemainformationen nur für das erste Ergebnis ab. Um Schemainformationen für mehrere Ergebnisse abzurufen, verwenden Sie Fill mit festgelegt MissingSchemaAction auf AddWithKey.

Weitere Informationen

Gilt für:

Fill(DataTable)

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

Aktualisiert Zeilen in einem angegebenen Bereich des DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den DataTable-Namen verwendet.

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 der DataTable, die für die Tabellenzuordnung verwendet werden soll.

Gibt zurück

Die Anzahl der Zeilen, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden. 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 der SELECT-Anweisung zugeordnete Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung geschlossen wird, bevor Fill sie aufgerufen 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 die Zeilen dann Zielobjekten DataTable in hinzu DataSet, und erstellt die DataTable Objekte, sofern sie noch nicht vorhanden sind. Beim Erstellen von DataTable Objekten erstellt der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction -Eigenschaft jedoch auf AddWithKeyfestgelegt ist, werden auch die entsprechenden Primärschlüssel und Einschränkungen erstellt.

Wenn doppelte DbDataAdapter Spalten beim Auffüllen eines DataTableauftreten, 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 platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw. Wenn mehrere Resultsets hinzugefügt werden, wird jedes DataSet Resultset in einer separaten Tabelle platziert.

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

Die Fill -Methode unterstützt Szenarien, in denen das DataSet mehrere DataTable Objekte enthält, deren Namen sich nur nach Groß- und Kleinschreibung unterscheiden. Führt in solchen Situationen einen Vergleich zwischen Groß- und Kleinschreibung durch, 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".  

Wenn Fill aufgerufen wird und nur einen DataTable enthält, dessen Name sich nur nach Groß- und DataSet Kleinschreibung unterscheidet, wird dies DataTable aktualisiert. In diesem Szenario wird beim Vergleich 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 für dieselbe 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 den DataTableangefügt.

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 Löschen von Primärschlüsseln.

Hinweis

Beim Behandeln von Batch-SQL-Anweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung von Fill und FillSchema für eine .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 für die Verwendung durch einen .NET Framework Datenanbieter konzipiert.

Weitere Informationen

Gilt für:

Fill(DataTable, IDataReader)

Aktualisiert Zeilen in einer DataTable oder fügt Zeilen hinzu, um anhand der angegebenen Namen DataTable und IDataReader Übereinstimmung mit den Zeilen in der Datenquelle zu erzielen.

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

Ein DataTable, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

dataReader
IDataReader

Der Name von IDataReader.

Gibt zurück

Die Anzahl der Zeilen, die dem DataTable erfolgreich hinzufügt bzw. darin aktualisiert wurden. 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

Aktualisiert Zeilen im DataSet oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, die den Namen des DataSet und den Namen der DataTable verwenden.

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

Ein DataSet, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

srcTable
String

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

Gibt zurück

Die Anzahl der Zeilen, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden. 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 mit Zeilen aus der Tabelle kategorien zu füllen. In diesem Beispiel wird davon ausgegangen, dass Sie ein OleDbDataAdapter und ein DataSeterstellt haben.

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 mithilfe einer SELECT-Anweisung aus der Datenquelle ab. Das IDbConnection dem Select-Befehl zugeordnete Objekt muss gültig sein, muss aber nicht geöffnet sein. Wenn geschlossen IDbConnection ist, bevor Fill aufgerufen wird, wird es 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 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", "Spaltenname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.

Wenn die angegebene Abfrage mehrere Ergebnisse zurückgibt, wird jedes Resultset in einer separaten Tabelle platziert. Zusätzliche Resultsets werden benannt, indem integrale Werte an den angegebenen Tabellennamen angefügt werden (z. B. "Table", "Table1", "Table2" usw.). Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wird die für die Select-Abfrage erstellte Tabelle "Table" genannt, da es sich um die erste erstellte Tabelle handelt. 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 das DataSet mehrere DataTable Objekte enthält, deren Namen sich nur nach Groß- und Kleinschreibung unterscheiden. Führt in solchen Situationen einen Vergleich zwischen Groß- und Kleinschreibung durch, 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".  

Wenn Fill aufgerufen wird und nur einen DataTable enthält, dessen Name sich nur nach Groß- und DataSet Kleinschreibung unterscheidet, wird dies DataTable aktualisiert. In diesem Szenario wird beim Vergleich 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 hinzugefügt wurden, in den Datentabellen. Der Rest des Vorgangs wird abgebrochen.

Wenn die SELECT-Anweisung, die zum Auffüllen verwendet DataSet wird, mehrere Ergebnisse zurückgibt, z. B. eine batch-SQL-Anweisung, beachten Sie Folgendes:

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

Wenn Sie nachfolgende Fill Aufrufe zum Aktualisieren des Inhalts verwenden DataSet, müssen zwei Bedingungen erfüllt sein:

  1. Die SQL-Anweisung sollte mit der sql-Anweisung übereinstimmen, die ursprünglich zum Auffüllen von DataSetverwendet wurde.

  2. Die Schlüsselspalteninformationen müssen vorhanden sein. Wenn Primärschlüsselinformationen vorhanden sind, werden alle doppelten Zeilen abgeglichen und nur einmal in der angezeigt, die DataTable dem DataSetentspricht. Primärschlüsselinformationen können entweder über FillSchemafestgelegt werden, indem Sie die PrimaryKey -Eigenschaft von DataTableangeben oder die MissingSchemaAction -Eigenschaft auf AddWithKeyfestlegen.

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 Löschen von Primärschlüsseln.

Hinweis

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

Hinweise für Vererber

Rufen Sie beim Überschreiben Fill(DataSet) in einer abgeleiteten Klasse unbedingt die Methode der Basisklasse Fill(DataSet) auf.

Weitere Informationen

Gilt für:

Fill(DataSet)

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

Fügt Zeilen in DataSet hinzu oder aktualisiert diese.

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

Ein DataSet, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

Gibt zurück

Die Anzahl der Zeilen, die dem DataSet erfolgreich hinzufügt bzw. darin aktualisiert wurden. Dies schließt keine Zeilen ein, die von Anweisungen betroffen sind, die keine Zeilen zurückgeben.

Implementiert

Hinweise

Die Fill -Methode ruft die Daten mithilfe einer SELECT-Anweisung aus der Datenquelle ab. Das IDbConnection dem Select-Befehl zugeordnete Objekt muss gültig sein, muss aber nicht geöffnet sein. Wenn geschlossen IDbConnection wird, bevor Fill aufgerufen wird, wird es geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill 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 hinzugefügt wurden, in den Datentabellen. Der Rest des Vorgangs wird abgebrochen.

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

Wenn das DbDataAdapter Objekt beim Auffüllen eines DataTableauf doppelte Spalten stößt, generiert es Namen für die nachfolgenden Spalten mit dem Muster "Spaltenname1", "Spaltenname2", "Spaltenname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.

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 benannt, indem integrale Werte an den angegebenen Tabellennamen angefügt werden (z. B. "Table", "Table1", "Table2" usw.). Da für eine Abfrage, die keine Zeilen zurückgibt, keine Tabelle erstellt wird, wird beim Verarbeiten einer Einfügeabfrage gefolgt von einer Auswahlabfrage die für die Auswahlabfrage erstellte Tabelle als "Tabelle" bezeichnet, da es sich um die erste erstellte Tabelle handelt. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass keine Konflikte mit diesen Benennungsmustern auftreten.

Wenn die SELECT-Anweisung, die zum Auffüllen verwendet DataSet wird, mehrere Ergebnisse zurückgibt, z. B. Sql-Batchanweisungen, und wenn eines der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und nicht hinzugefügt DataSet.

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

  1. Die SQL-Anweisung sollte mit der sql-Anweisung übereinstimmen, die ursprünglich zum Auffüllen von DataSetverwendet wurde.

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

Wenn Primärschlüsselinformationen vorhanden sind, werden alle doppelten Zeilen abgeglichen und nur einmal in der angezeigt, die DataTable dem DataSetentspricht. Primärschlüsselinformationen können entweder über FillSchemafestgelegt werden, indem die PrimaryKey -Eigenschaft von DataTableangegeben wird, 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 Löschen von Primärschlüsseln.

Hinweis

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

Weitere Informationen

Gilt für:

Fill(DataTable, IDbCommand, CommandBehavior)

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

Aktualisiert Zeilen in einer DataTable oder fügt Zeilen hinzu, um Übereinstimmung mit den Zeilen in der Datenquelle herzustellen, wobei die angegebenen Werte für DataTable, IDbCommand und CommandBehavior verwendet werden.

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

Ein DataTable, das mit Datensätzen und bei Bedarf mit einem Schema gefüllt wird.

command
IDbCommand

Die SQL-SELECT-Anweisung, mit der Zeilen aus der Datenquelle abgerufen werden.

behavior
CommandBehavior

Einer der CommandBehavior-Werte.

Gibt zurück

Die Anzahl der Zeilen, die dem DataTable erfolgreich hinzufügt bzw. darin aktualisiert wurden. 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 von einer zugeordneten SelectCommand Eigenschaft angegeben wird. Das der SELECT-Anweisung zugeordnete Verbindungsobjekt muss gültig sein, muss aber nicht geöffnet sein. Wenn die Verbindung geschlossen wird, bevor Fill aufgerufen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung geöffnet ist, bevor Fill aufgerufen wird, bleibt sie geöffnet.

Der Fill Vorgang fügt dann die Zeilen dem angegebenen Zielobjekt DataTable im DataSethinzu, und erstellt das DataTable -Objekt, sofern es noch nicht vorhanden ist. Beim Erstellen eines DataTable Objekts erstellt der Fill Vorgang normalerweise nur Metadaten für Spaltennamen. Wenn die MissingSchemaAction -Eigenschaft jedoch auf AddWithKeyfestgelegt ist, werden auch entsprechende Primärschlüssel und Einschränkungen erstellt.

Wenn das DbDataAdapter Objekt beim Auffüllen eines DataTableauf doppelte Spalten stößt, 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 platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.

Die Überladung von, Fill die als Parameter akzeptiert DataTable , erhält nur das erste Ergebnis. Verwenden Sie eine Überladung von, Fill die als Parameter akzeptiert DataSet , um mehrere Ergebnisse zu erhalten.

Sie können die Fill -Methode mehrmals für dieselbe 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 DataTableangefügt.

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 Löschen von Primärschlüsseln.

Hinweis

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

Hinweise für Vererber

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

Weitere Informationen

Gilt für: