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 DataTable Objekten hinzu, um mit diesen in der Datenquelle ab dem angegebenen Datensatz zu übereinstimmen und bis zur angegebenen maximalen Anzahl von Datensätzen abzurufen oder zu aktualisieren.

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)

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

Int32

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

Ein maxRecords Wert von 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 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 jedoch nicht geöffnet werden. Wenn die Verbindung vor Fill dem Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung vor dem Aufruf geöffnet ist, bleibt sie geöffnet Fill .

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

Wenn die DbDataAdapter doppelten Spalten beim Auffüllen einer DataTableSpalte auftreten, generiert sie Namen für die nachfolgenden Spalten, mit dem Muster "columnname1", "columnname2", "columnname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw. Wenn mehrere Ergebnissätze dem DataSet einzelnen Ergebnissatz hinzugefügt werden, wird in einer separaten Tabelle platziert. Zusätzliche Ergebnissätze werden durch Anfügen von integralen Werten an den angegebenen Tabellennamen (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.) benannt. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass es keine Konflikte mit diesen Benennungsmustern gibt.

Die Fill Methode unterstützt Szenarien, in denen mehrere Objekte enthaltenDataTable, deren DataSet Namen nur nach Fall unterscheiden. In solchen Situationen wird ein Groß-/Kleinschreibungsvergleich ausgeführt, 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 sie aufgerufen wird und nur DataTable eine enthält, deren DataSet Name nur nach Fall unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario ist der Vergleich Groß-/Kleinschreibung. 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 den 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

Beim Behandeln von Batch- SQL Anweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung und Fill FillSchema für einen .NET Framework Datenanbieter Schemainformationen nur für das erste Ergebnis ab.

Hinweise für Vererber

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

Siehe auch

Gilt für

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.

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

Int32

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

Ein maxRecords Wert von 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 kein Fehler ausgegeben.

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

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

Wenn das DbDataAdapter Objekt doppelte Spalten beim Auffüllen einer DataTableSpalte auftritt, generiert es Namen für die nachfolgenden Spalten, indem das Muster "columnname1", "columnname2", "columnname3" und so weiter 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 jeder Ergebnissatz in einer separaten Tabelle platziert. Zusätzliche Ergebnissätze werden durch Anfügen von integralen Werten an den angegebenen Tabellennamen (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.) benannt. Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wenn Sie eine Einfügenabfrage verarbeiten möchten, gefolgt von einer Auswahlabfrage, würde die für die Auswahlabfrage erstellte Tabelle "Tabelle" genannt werden, da sie die erste Tabelle erstellt hat. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass es keine Konflikte mit diesen Benennungsmustern gibt.

Die Fill Methode unterstützt Szenarien, in denen mehrere Objekte enthaltenDataTable, deren DataSet Namen nur nach Fall unterscheiden. In solchen Situationen wird ein Groß-/Kleinschreibungsvergleich ausgeführt, 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 sie aufgerufen wird und nur DataTable eine enthält, deren DataSet Name nur nach Fall unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario ist der Vergleich Groß-/Kleinschreibung. 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 aufgetreten ist, bleiben Zeilen vor dem Auftreten des Fehlers in den Datentabellen enthalten. Der Rest des Vorgangs wird abgebrochen.

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

  • Bei der Verarbeitung mehrerer Ergebnisse aus einer Batch-SQL-Anweisung maxRecords gilt nur für das erste Ergebnis. Das gleiche gilt für Zeilen, die kapitelierte Ergebnisse enthalten (nur .NET Framework Datenanbieter für OLE DB). Das Ergebnis auf oberster Ebene ist durch maxRecordseingeschränkt, aber alle untergeordneten Zeilen werden hinzugefügt.

  • Wenn eine 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 von maxRecords. Das gesamte vom Abfrage generierte Resultset wird jedoch weiterhin vom Server zurückgegeben.

Hinweise für Vererber

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt werden Fill(DataSet) , müssen Sie die Basisklasse-Methode Fill(DataSet) aufrufen.

Siehe auch

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

Int32

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

Ein maxRecords Wert von 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 kein Fehler ausgegeben.

Gilt für

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.

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

Int32

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, um eine DataSet Mit 15 Zeilen zu füllen, OleDbDataAdapterbeginnend mit Zeile 10, aus der Tabelle "Kategorien". In diesem Beispiel wird davon ausgegangen, dass Sie eine und eine OleDbDataAdapter 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

Ein maxRecords Wert von 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 maxRecords nur für das erste Ergebnis.

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

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

Wenn das DbDataAdapter Objekt doppelte Spalten beim Auffüllen einer DataTableSpalte auftritt, generiert es Namen für die nachfolgenden Spalten, indem das Muster "columnname1", "columnname2", "columnname3" und so weiter 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 jeder Ergebnissatz in einer separaten Tabelle platziert. Zusätzliche Ergebnissätze werden durch Anfügen von integralen Werten an den angegebenen Tabellennamen (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.) benannt. Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wenn Sie eine Insert-Abfrage verarbeiten, gefolgt von einer Auswahlabfrage, wird die für die Auswahlabfrage erstellte Tabelle "Tabelle" genannt, da sie die erste Tabelle erstellt hat. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass es keine Konflikte mit diesen Benennungsmustern gibt.

Die Fill Methode unterstützt Szenarien, in denen mehrere Objekte enthaltenDataTable, deren DataSet Namen nur nach Fall unterscheiden. In solchen Situationen wird ein Groß-/Kleinschreibungsvergleich ausgeführt, 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 sie aufgerufen wird und nur DataTable eine enthält, deren DataSet Name nur nach Fall unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario ist der Vergleich Groß-/Kleinschreibung. 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 aufgetreten ist, bleiben Zeilen vor dem Auftreten des Fehlers in den Datentabellen enthalten. Der Rest des Vorgangs wird abgebrochen.

Wenn die SELECT-Anweisung zum Auffüllen mehrerer DataSet Ergebnisse verwendet wird, z. B. Batch-SQL-Anweisungen, beachten Sie folgendes:

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

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

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

  1. Die SQL-Anweisung sollte mit dem ursprünglich verwendeten übereinstimmen, um die DataSetSQL aufzufüllen.

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

Wenn Primärschlüsselinformationen vorhanden sind, werden doppelte Zeilen abgeglichen und werden nur einmal in den DataTable entsprechenden DataSetZeilen angezeigt. Primärschlüsselinformationen können entweder durch FillSchemaFestlegen der PrimaryKey Eigenschaft des Objekts oder durch Festlegen der DataTableMissingSchemaAction Eigenschaft auf AddWithKeyfestgelegt werden.

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

Beim Behandeln von Batch- SQL Anweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema für die .NET Framework Datenanbieter 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 von maxRecords. Der gesamte vom Abfrage generierte Ergebnissatz wird jedoch weiterhin vom Server zurückgegeben.

Hinweise für Vererber

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt werden Fill(DataSet) , müssen Sie die Basisklasse-Methode Fill(DataSet) aufrufen.

Siehe auch

Gilt für

Fill(Int32, Int32, DataTable[])

Fügt Zeilen in einem oder mehreren DataTable Objekten hinzu, um mit diesen in der Datenquelle ab dem angegebenen Datensatz zu übereinstimmen und bis zur angegebenen maximalen Anzahl von Datensätzen abzurufen oder zu aktualisieren.

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

Int32

Die Anzahl der Zeilen, die erfolgreich in den DataTable Objekten 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

Ein maxRecords Wert von 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 jedoch nicht geöffnet werden. Wenn die Verbindung vor Fill dem Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann wird sie geschlossen. Wenn die Verbindung vor dem Aufruf geöffnet ist, bleibt sie geöffnet Fill .

Der Fill Vorgang fügt dann die Zeilen zu Zielobjekten DataTable in den DataSet, das Erstellen der DataTable Objekte, wenn sie noch nicht vorhanden sind, hinzu. Beim Erstellen von Objekten erstellt DataTable der Fill Vorgang normalerweise nur Spaltennamenmetadaten. Wenn die MissingSchemaAction Eigenschaft jedoch auf AddWithKey, geeignete Primärschlüssel und Einschränkungen festgelegt ist, werden auch 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 doppelte Spalten beim Auffüllen einer DataTableSpalte auftritt, generiert er Namen für die nachfolgenden Spalten, indem das Muster "columnname1", "columnname2", "columnname3" usw. verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw. Wenn mehrere Ergebnissätze dem DataSetErgebnissatz hinzugefügt werden, wird jeder Ergebnissatz in einer separaten Tabelle platziert. Zusätzliche Ergebnissätze werden durch Anfügen von integralen Werten an den angegebenen Tabellennamen (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.) benannt. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass es keine Konflikte mit diesen Benennungsmustern gibt.

Wenn die SELECT-Anweisung zum Auffüllen mehrerer DataSet Ergebnisse verwendet wird, z. B. eine Batch-SQL-Anweisung, wenn eine der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und nicht zur 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 den DataTable.

Hinweis

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

Siehe auch

Gilt für

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.

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

Int32

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 mit der SELECT-Anweisung verknüpfte Verbindungsobjekt muss gültig sein, muss jedoch nicht geöffnet werden. Wenn die Verbindung vor Fill dem Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung vor dem Aufruf geöffnet ist, bleibt sie geöffnet Fill .

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

Wenn die DbDataAdapter doppelten Spalten beim Auffüllen einer DataTableSpalte auftreten, generiert sie Namen für die nachfolgenden Spalten, mit dem Muster "columnname1", "columnname2", "columnname3" usw. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw. Wenn mehrere Ergebnissätze dem DataSet einzelnen Ergebnissatz hinzugefügt werden, wird in einer separaten Tabelle platziert.

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

Die Fill Methode unterstützt Szenarien, in denen mehrere Objekte enthaltenDataTable, deren DataSet Namen nur nach Fall unterscheiden. In solchen Situationen wird ein Groß-/Kleinschreibungsvergleich ausgeführt, 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 sie aufgerufen wird und nur DataTable eine enthält, deren DataSet Name nur nach Fall unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario ist der Vergleich Groß-/Kleinschreibung. 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 den 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

Beim Behandeln von Batch- SQL Anweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung und Fill FillSchema für einen .NET Framework Datenanbieter Schemainformationen nur für das erste Ergebnis ab.

Hinweise für Vererber

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

Siehe auch

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

Int32

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)

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

Int32

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 Zeile aus der Kategorientabelle zu füllen. In diesem Beispiel wird davon ausgegangen, dass Sie eine und eine OleDbDataAdapter 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 objekt, das dem Auswahlbefehl zugeordnet ist, muss gültig sein, muss aber nicht geöffnet sein. Wenn dies IDbConnection vor Fill dem Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen, und dann geschlossen. Wenn die Verbindung vor dem Aufruf geöffnet ist, bleibt sie geöffnet Fill .

Wenn ein Befehl keine Zeilen zurückgibt, werden keine Tabellen hinzugefügt DataSet, und keine Ausnahme wird 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 jeder Ergebnissatz in einer separaten Tabelle platziert. Zusätzliche Ergebnissätze werden durch Anfügen von integralen Werten an den angegebenen Tabellennamen (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.) benannt. Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wenn Sie eine Einfügenabfrage verarbeiten möchten, gefolgt von einer Auswahlabfrage, würde die für die Auswahlabfrage erstellte Tabelle "Tabelle" genannt werden, da sie die erste Tabelle erstellt hat. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass es keine Konflikte mit diesen Benennungsmustern gibt.

Die Fill Methode unterstützt Szenarien, in denen mehrere Objekte enthaltenDataTable, deren DataSet Namen nur nach Fall unterscheiden. In solchen Situationen wird ein Groß-/Kleinschreibungsvergleich ausgeführt, 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 sie aufgerufen wird und nur DataTable eine enthält, deren DataSet Name nur nach Fall unterschiedlich ist, wird dies DataTable aktualisiert. In diesem Szenario ist der Vergleich Groß-/Kleinschreibung. 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 aufgetreten ist, bleiben Zeilen vor dem Auftreten des Fehlers in den Datentabellen enthalten. Der Rest des Vorgangs wird abgebrochen.

Wenn die SELECT-Anweisung zum Auffüllen mehrerer DataSet Ergebnisse verwendet wird, z. B. eine Batch-SQL-Anweisung, beachten Sie folgendes:

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

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

  1. Die SQL-Anweisung sollte mit dem ursprünglich verwendeten übereinstimmen, um die DataSetSQL aufzufüllen.

  2. Die Schlüsselspalteninformationen müssen vorhanden sein. Wenn Primärschlüsselinformationen vorhanden sind, werden doppelte Zeilen abgeglichen und werden nur einmal in dem angezeigt, der dem DataTable entspricht DataSet. Primärschlüsselinformationen können entweder durch FillSchemaFestlegen der PrimaryKey Eigenschaft des Objekts oder durch Festlegen der DataTableMissingSchemaAction Eigenschaft auf AddWithKeyfestgelegt werden.

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

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

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt werden Fill(DataSet) , müssen Sie die Basisklasse-Methode Fill(DataSet) aufrufen.

Siehe auch

Gilt für

Fill(DataSet)

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

Int32

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 aus der Datenquelle mithilfe einer SELECT-Anweisung ab. Das IDbConnection objekt, das dem Auswahlbefehl zugeordnet ist, muss gültig sein, muss aber nicht geöffnet sein. Wenn dies IDbConnection vor Fill dem Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen und dann geschlossen. Wenn die Verbindung vor dem Aufruf geöffnet ist, bleibt sie geöffnet Fill .

Wenn beim Auffüllen der Datentabellen ein Fehler oder eine Ausnahme aufgetreten ist, bleiben Zeilen vor dem Auftreten des Fehlers in den Datentabellen enthalten. Der Rest des Vorgangs wird abgebrochen.

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

Wenn das DbDataAdapter Objekt doppelte Spalten beim Auffüllen einer DataTableSpalte auftritt, generiert er Namen für die nachfolgenden Spalten mithilfe des Musters "columnname1", "columnname2", "columnname3" und so weiter. 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 der Ergebnissatz für jede Zeilenrückgabeabfrage in einer separaten Tabelle platziert. Zusätzliche Ergebnissätze werden durch Anfügen von integralen Werten an den angegebenen Tabellennamen (z. B. "Tabelle", "Tabelle1", "Tabelle2" usw.) benannt. Da keine Tabelle für eine Abfrage erstellt wird, die keine Zeilen zurückgibt, wenn Sie eine Einfügenabfrage verarbeiten, gefolgt von einer Auswahlabfrage, wird die für die Auswahlabfrage erstellte Tabelle als "Tabelle" bezeichnet, da sie die erste Tabelle erstellt hat. Wenn Ihre App Spalten- und Tabellennamen verwendet, stellen Sie sicher, dass es keine Konflikte mit diesen Benennungsmustern gibt.

Wenn die SELECT-Anweisung verwendet wird, um mehrere DataSet Ergebnisse aufzufüllen, z. B. Batch-SQL-Anweisungen, wenn eine der Ergebnisse einen Fehler enthält, werden alle nachfolgenden Ergebnisse übersprungen und werden nicht dem DataSetHinzugefügt.

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

  1. Die SQL-Anweisung sollte mit dem ursprünglich verwendeten übereinstimmen, um die DataSetSQL aufzufüllen.

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

Wenn Primärschlüsselinformationen vorhanden sind, werden doppelte Zeilen abgeglichen und werden nur einmal in dem angezeigt, der dem DataTable entspricht DataSet. Primärschlüsselinformationen können entweder durch FillSchemaFestlegen der PrimaryKey Eigenschaft des Objekts oder durch Festlegen der DataTableMissingSchemaAction Eigenschaft auf AddWithKeyfestgelegt werden.

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

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

Siehe auch

Gilt für

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.

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

Int32

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 durch eine zugeordnete SelectCommand Eigenschaft angegeben wird. Das mit der SELECT-Anweisung verknüpfte Verbindungsobjekt muss gültig sein, muss jedoch nicht geöffnet werden. Wenn die Verbindung vor Fill dem Aufruf geschlossen wird, wird sie geöffnet, um Daten abzurufen und dann geschlossen. Wenn die Verbindung vor dem Aufruf geöffnet ist, bleibt sie geöffnet Fill .

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

Wenn das DbDataAdapter Objekt doppelte Spalten beim Auffüllen einer DataTableSpalte auftritt, generiert es Namen für die nachfolgenden Spalten, indem das Muster "columnname1", "columnname2", "columnname3" und so weiter verwendet wird. Wenn die eingehenden Daten unbenannte Spalten enthalten, werden sie platziert, der DataSet gemäß dem Muster "Column1", "Column2" usw.

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

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 den 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

Beim Behandeln von Batch- SQL Anweisungen, die mehrere Ergebnisse zurückgeben, ruft die Implementierung FillSchema für die .NET Framework Datenanbieter 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 Methode ist geschützt und wird für die Fill(DataSet) Verwendung durch einen .NET Framework Datenanbieter entwickelt.

Siehe auch

Gilt für