Freigeben über


DataSet.Load Methode

Definition

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der angegebenen IDataReader.

Überlädt

Name Beschreibung
Load(IDataReader, LoadOption, DataTable[])

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der bereitgestellten IDataReaderDatenquelle, wobei ein Array von DataTable Instanzen verwendet wird, um die Schema- und Namespaceinformationen zu liefern.

Load(IDataReader, LoadOption, String[])

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der angegebenen IDataReaderDatenquelle, wobei ein Array von Zeichenfolgen verwendet wird, um die Namen für die Tabellen innerhalb der DataSet.

Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der bereitgestellten IDataReaderDatenquelle, wobei ein Array von DataTable Instanzen verwendet wird, um die Schema- und Namespaceinformationen zu liefern.

Hinweise

Die Load Methode bietet eine Technik zum Ausfüllen eines einzelnen DataTable mit Daten, die aus einer IDataReader Instanz abgerufen werden. Diese Methode bietet die gleiche Funktionalität, ermöglicht ihnen jedoch das Laden mehrerer Resultsets aus einer IDataReader in mehrere Tabellen innerhalb einer DataSetTabelle.

Wenn die DataSet bereits Vorhandenen Zeilen enthalten, werden die eingehenden Daten aus der Datenquelle mit den vorhandenen Zeilen zusammengeführt.

Die Load Methode kann in mehreren gängigen Szenarien verwendet werden, wobei sich alles um das Abrufen von Daten aus einer angegebenen Datenquelle zentriert und dem aktuellen Datencontainer hinzugefügt werden kann (in diesem Fall a DataSet). In diesen Szenarien wird die Standardverwendung für ein DataSetUpdate- und Zusammenführungsverhalten beschrieben.

Eine DataSet Synchronisierung oder Aktualisierung mit einer einzelnen primären Datenquelle. Die DataSet Änderungen werden nachverfolgt, sodass die Synchronisierung mit der primären Datenquelle möglich ist. Darüber hinaus kann eine DataSet inkrementelle Daten aus einer oder mehreren sekundären Datenquellen akzeptiert werden. Dies DataSet ist nicht für das Nachverfolgen von Änderungen verantwortlich, um die Synchronisierung mit der sekundären Datenquelle zu ermöglichen.

Angesichts dieser beiden hypothetischen Datenquellen erfordert ein Benutzer wahrscheinlich eins der folgenden Verhaltensweisen:

  • Initialisieren DataSet sie aus einer primären Datenquelle. In diesem Szenario möchte der Benutzer ein leeres DataSet Objekt mit Werten aus der primären Datenquelle initialisieren. Mindestens ein Inhalt der DataTable wird geändert. Später beabsichtigt der Benutzer, Änderungen an die primäre Datenquelle zurückzuverbreiten.

  • Änderungen beibehalten und aus der primären Datenquelle erneut synchronisieren. In diesem Szenario möchte der Benutzer das DataSet ausgefüllte Szenario übernehmen und eine inkrementelle Synchronisierung mit der primären Datenquelle durchführen, wobei änderungen beibehalten werden, die in der DataSet.

  • Inkrementeller Datenfeed aus sekundären Datenquellen. In diesem Szenario möchte der Benutzer Änderungen aus einer oder mehreren sekundären Datenquellen zusammenführen und diese Änderungen an die primäre Datenquelle weitergeben.

Die Load Methode ermöglicht all diese Szenarien. Mit dieser Methode können Sie einen Ladeoptionsparameter angeben, der angibt, wie Zeilen bereits in einer DataTable Kombination mit geladenen Zeilen vorhanden sind. In der folgenden Tabelle werden die drei Ladeoptionen beschrieben, die von der LoadOption Enumeration bereitgestellt werden. In jedem Fall gibt die Beschreibung das Verhalten an, wenn der Primärschlüssel einer Zeile in den eingehenden Daten mit dem Primärschlüssel einer vorhandenen Zeile übereinstimmt.

Option "Laden" Beschreibung
PreserveChanges (Standardwert) Aktualisiert die ursprüngliche Version der Zeile mit dem Wert der eingehenden Zeile.
OverwriteChanges Aktualisiert die aktuellen und ursprünglichen Versionen der Zeile mit dem Wert der eingehenden Zeile.
Upsert Aktualisiert die aktuelle Version der Zeile mit dem Wert der eingehenden Zeile.

Im Allgemeinen sind die PreserveChanges Optionen OverwriteChanges für Szenarien vorgesehen, in denen der Benutzer die DataSet Änderungen mit der primären Datenquelle synchronisieren muss. Die Upsert Option erleichtert das Aggregieren von Änderungen aus einer oder mehreren sekundären Datenquellen.

Load(IDataReader, LoadOption, DataTable[])

Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der bereitgestellten IDataReaderDatenquelle, wobei ein Array von DataTable Instanzen verwendet wird, um die Schema- und Namespaceinformationen zu liefern.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::Data::DataTable ^> ^ tables);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")]
public void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, params System.Data.DataTable[] tables);
public void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, params System.Data.DataTable[] tables);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")>]
member this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.DataTable[] -> unit
member this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.DataTable[] -> unit
Public Sub Load (reader As IDataReader, loadOption As LoadOption, ParamArray tables As DataTable())

Parameter

reader
IDataReader

Ein IDataReader Ergebnissatz, der mindestens ein Resultsets bereitstellt.

loadOption
LoadOption

Ein Wert aus der Aufzählung, der LoadOption angibt, wie Zeilen bereits in den Instanzen innerhalb der DataTableDataSet Auflistung mit eingehenden Zeilen kombiniert werden, die denselben Primärschlüssel aufweisen.

tables
DataTable[]

Ein Array von DataTable Instanzen, aus denen die Load(IDataReader, LoadOption, DataTable[]) Methode Namen- und Namespaceinformationen abruft. Jede dieser Tabellen muss ein Element des DataTableCollection darin DataSetenthaltenen Elements sein.

Attribute

Beispiele

Im folgenden Beispiel wird eine neue DataSetInstanz erstellt, der DataSetzwei DataTable Instanzen hinzugefügt, und anschließend wird die Methode mit der DataSetLoad Methode gefüllt, wobei Daten aus einem DataTableReader Datensatz abgerufen werden, der zwei Resultsets enthält. Schließlich zeigt das Beispiel den Inhalt der Tabellen im Konsolenfenster an.

static void Main()
{
    DataSet dataSet = new DataSet();

    DataTable customerTable = new DataTable();
    DataTable productTable = new DataTable();

    // This information is cosmetic, only.
    customerTable.TableName = "Customers";
    productTable.TableName = "Products";

    // Add the tables to the DataSet:
    dataSet.Tables.Add(customerTable);
    dataSet.Tables.Add(productTable);

    // Load the data into the existing DataSet.
    DataTableReader reader = GetReader();
    dataSet.Load(reader, LoadOption.OverwriteChanges,
        customerTable, productTable);

    // Print out the contents of each table:
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetCustomers()
{
    // Create sample Customers table.
    DataTable table = new DataTable();
    table.TableName = "Customers";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Mary" });
    table.Rows.Add(new object[] { 1, "Andy" });
    table.Rows.Add(new object[] { 2, "Peter" });
    table.AcceptChanges();
    return table;
}

private static DataTable GetProducts()
{
    // Create sample Products table.
    DataTable table = new DataTable();
    table.TableName = "Products";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID",
        typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Wireless Network Card" });
    table.Rows.Add(new object[] { 1, "Hard Drive" });
    table.Rows.Add(new object[] { 2, "Monitor" });
    table.Rows.Add(new object[] { 3, "CPU" });
    table.AcceptChanges();
    return table;
}

private static void PrintColumns(DataTable table)
{
    Console.WriteLine();
    Console.WriteLine(table.TableName);
    Console.WriteLine("=========================");
    // Loop through all the rows in the table:
    foreach (DataRow row in table.Rows)
    {
        for (int i = 0; i < table.Columns.Count; i++)
        {
            Console.Write(row[i] + " ");
        }
        Console.WriteLine();
    }
}

private static DataTableReader GetReader()
{
    // Return a DataTableReader containing multiple
    // result sets, just for the sake of this demo.
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());
    return dataSet.CreateDataReader();
}
Sub Main()
    Dim dataSet As New DataSet

    Dim customerTable As New DataTable
    Dim productTable As New DataTable

    ' This information is cosmetic, only.
    customerTable.TableName = "Customers"
    productTable.TableName = "Products"

    ' Add the tables to the DataSet:
    dataSet.Tables.Add(customerTable)
    dataSet.Tables.Add(productTable)

    ' Load the data into the existing DataSet. 
    Dim reader As DataTableReader = GetReader()
    dataSet.Load(reader, LoadOption.OverwriteChanges, _
        customerTable, productTable)

    ' Print out the contents of each table:
    For Each table As DataTable In dataSet.Tables
        PrintColumns(table)
    Next

    Console.WriteLine("Press any key to continue.")
    Console.ReadKey()
End Sub

Private Function GetCustomers() As DataTable
    ' Create sample Customers table.
    Dim table As New DataTable
    table.TableName = "Customers"

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", _
        GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {0, "Mary"})
    table.Rows.Add(New Object() {1, "Andy"})
    table.Rows.Add(New Object() {2, "Peter"})
    table.AcceptChanges()
    Return table
End Function

Private Function GetProducts() As DataTable
    ' Create sample Products table, in order
    ' to demonstrate the behavior of the DataTableReader.
    Dim table As New DataTable
    table.TableName = "Products"

    ' Create two columns, ID and Name.
    Dim idColumn As DataColumn = table.Columns.Add("ID", _
        GetType(Integer))
    table.Columns.Add("Name", GetType(String))

    ' Set the ID column as the primary key column.
    table.PrimaryKey = New DataColumn() {idColumn}

    table.Rows.Add(New Object() {0, "Wireless Network Card"})
    table.Rows.Add(New Object() {1, "Hard Drive"})
    table.Rows.Add(New Object() {2, "Monitor"})
    table.Rows.Add(New Object() {3, "CPU"})
    Return table
End Function

Private Function GetReader() As DataTableReader
    ' Return a DataTableReader containing multiple
    ' result sets, just for the sake of this demo.
    Dim dataSet As New DataSet
    dataSet.Tables.Add(GetCustomers())
    dataSet.Tables.Add(GetProducts())
    Return dataSet.CreateDataReader()
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

    Console.WriteLine()
    Console.WriteLine(table.TableName)
    Console.WriteLine("=========================")
    ' Loop through all the rows in the table.
    For Each row As DataRow In table.Rows
        For Each col As DataColumn In table.Columns
            Console.Write(row(col).ToString() & " ")
        Next
        Console.WriteLine()
    Next
End Sub

Hinweise

Die Load Methode bietet eine Technik zum Ausfüllen eines einzelnen DataTable mit Daten, die aus einer IDataReader Instanz abgerufen werden. Diese Methode bietet die gleiche Funktionalität, ermöglicht ihnen jedoch das Laden mehrerer Resultsets aus einer IDataReader in mehrere Tabellen innerhalb einer DataSetTabelle.

Hinweis

Der Ladevorgang schlägt fehl, InvalidOperationException wenn eine der Quelldatenspalten in den eingehenden reader Spalten berechnet wird.

Mit dem loadOption Parameter können Sie angeben, wie die importierten Daten mit vorhandenen Daten interagieren sollen, und es kann sich um beliebige Werte aus der LoadOption Enumeration handeln. Weitere Informationen zur Verwendung dieses Parameters finden Sie in der DataTableLoad Dokumentation zur Methode.

Mit dem tables Parameter können Sie ein Array von DataTable Instanzen angeben, das die Reihenfolge der Tabellen angibt, die den einzelnen vom Leser geladenen Resultsets entsprechen. Die Load Methode füllt jede bereitgestellte DataTable Instanz mit Daten aus einem einzelnen Resultset aus dem Quelldatenleser aus. Nach jedem Resultset wechselt die Load Methode zum nächsten Resultset innerhalb des Lesers, bis keine weiteren Resultsets vorhanden sind.

Das Namensauflösungsschema für diese Methode ist identisch mit der Fill Methode der DbDataAdapter Klasse.

Weitere Informationen

Gilt für:

Load(IDataReader, LoadOption, String[])

Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der angegebenen IDataReaderDatenquelle, wobei ein Array von Zeichenfolgen verwendet wird, um die Namen für die Tabellen innerhalb der DataSet.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::String ^> ^ tables);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")]
public void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, params string[] tables);
public void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, params string[] tables);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")>]
member this.Load : System.Data.IDataReader * System.Data.LoadOption * string[] -> unit
member this.Load : System.Data.IDataReader * System.Data.LoadOption * string[] -> unit
Public Sub Load (reader As IDataReader, loadOption As LoadOption, ParamArray tables As String())

Parameter

reader
IDataReader

Ein IDataReader Ergebnissatz, der mindestens ein Resultsets bereitstellt.

loadOption
LoadOption

Ein Wert aus der Aufzählung, der LoadOption angibt, wie Zeilen bereits in den Instanzen innerhalb der DataTableDataSet Auflistung mit eingehenden Zeilen kombiniert werden, die denselben Primärschlüssel aufweisen.

tables
String[]

Ein Array von Zeichenfolgen, aus dem die Load Methode Tabellennameninformationen abruft.

Attribute

Beispiele

Im folgenden Konsolenanwendungsbeispiel werden zunächst Tabellen erstellt und Daten aus einem Reader mithilfe der Load Methode in eine DataSetDatei geladen. Im Beispiel werden dann Tabellen zu einer DataSet Tabelle hinzugefügt und versucht, die Tabellen mit Daten aus einem .DataTableReader Da in diesem Beispiel die an die Load Methode übergebenen Parameter einen Tabellennamen angeben, der nicht vorhanden ist, erstellt die Load Methode eine neue Tabelle, die mit dem als Parameter übergebenen Namen übereinstimmt. Nachdem die Daten geladen wurden, zeigt das Beispiel den Inhalt aller Tabellen im Konsolenfenster an.

static void Main()
{
    DataSet dataSet = new DataSet();

    DataTableReader reader = GetReader();

    // The tables listed as parameters for the Load method
    // should be in the same order as the tables within the IDataReader.
    dataSet.Load(reader, LoadOption.Upsert, "Customers", "Products");
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    // Now try the example with the DataSet
    // already filled with data:
    dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());

    // Retrieve a data reader containing changed data:
    reader = GetReader();

    // Load the data into the existing DataSet. Retrieve the order of the
    // the data in the reader from the
    // list of table names in the parameters. If you specify
    // a new table name here, the Load method will create
    // a corresponding new table.
    dataSet.Load(reader, LoadOption.Upsert,
        "NewCustomers", "Products");
    foreach (DataTable table in dataSet.Tables)
    {
        PrintColumns(table);
    }

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetCustomers()
{
    // Create sample Customers table.
    DataTable table = new DataTable();
    table.TableName = "Customers";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Mary" });
    table.Rows.Add(new object[] { 1, "Andy" });
    table.Rows.Add(new object[] { 2, "Peter" });
    table.AcceptChanges();
    return table;
}

private static DataTable GetProducts()
{
    // Create sample Products table.
    DataTable table = new DataTable();
    table.TableName = "Products";

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));
    table.Columns.Add("Name", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 0, "Wireless Network Card" });
    table.Rows.Add(new object[] { 1, "Hard Drive" });
    table.Rows.Add(new object[] { 2, "Monitor" });
    table.Rows.Add(new object[] { 3, "CPU" });
    table.AcceptChanges();
    return table;
}

private static void PrintColumns(DataTable table)
{
    Console.WriteLine();
    Console.WriteLine(table.TableName);
    Console.WriteLine("=========================");
    // Loop through all the rows in the table:
    foreach (DataRow row in table.Rows)
    {
        for (int i = 0; i < table.Columns.Count; i++)
        {
            Console.Write(row[i] + " ");
        }
        Console.WriteLine();
    }
}

private static DataTableReader GetReader()
{
    // Return a DataTableReader containing multiple
    // result sets, just for the sake of this demo.
    DataSet dataSet = new DataSet();
    dataSet.Tables.Add(GetCustomers());
    dataSet.Tables.Add(GetProducts());
    return dataSet.CreateDataReader();
}
Sub Main()
  Dim dataSet As New DataSet
  Dim table As DataTable

  Dim reader As DataTableReader = GetReader()

  ' The tables listed as parameters for the Load method 
  ' should be in the same order as the tables within the IDataReader.
  dataSet.Load(reader, LoadOption.Upsert, "Customers", "Products")
  For Each table In dataSet.Tables
    PrintColumns(table)
  Next

  ' Now try the example with the DataSet
  ' already filled with data:
  dataSet = New DataSet
  dataSet.Tables.Add(GetCustomers())
  dataSet.Tables.Add(GetProducts())

  ' Retrieve a data reader containing changed data:
  reader = GetReader()

  ' Load the data into the existing DataSet. Retrieve the order of the
  ' the data in the reader from the
  ' list of table names in the parameters. If you specify
  ' a new table name here, the Load method will create
  ' a corresponding new table.
  dataSet.Load(reader, LoadOption.Upsert, "NewCustomers", "Products")
  For Each table In dataSet.Tables
    PrintColumns(table)
  Next

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub

Private Function GetCustomers() As DataTable
  ' Create sample Customers table.
  Dim table As New DataTable
  table.TableName = "Customers"

  ' Create two columns, ID and Name.
  Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
  table.Columns.Add("Name", GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {0, "Mary"})
  table.Rows.Add(New Object() {1, "Andy"})
  table.Rows.Add(New Object() {2, "Peter"})
  table.AcceptChanges()
  Return table
End Function

Private Function GetProducts() As DataTable
  ' Create sample Products table, in order
  ' to demonstrate the behavior of the DataTableReader.
  Dim table As New DataTable
  table.TableName = "Products"

  ' Create two columns, ID and Name.
  Dim idColumn As DataColumn = table.Columns.Add("ID", GetType(Integer))
  table.Columns.Add("Name", GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {0, "Wireless Network Card"})
  table.Rows.Add(New Object() {1, "Hard Drive"})
  table.Rows.Add(New Object() {2, "Monitor"})
  table.Rows.Add(New Object() {3, "CPU"})
  Return table
End Function

Private Function GetReader() As DataTableReader
  ' Return a DataTableReader containing multiple
  ' result sets, just for the sake of this demo.
  Dim dataSet As New DataSet
  dataSet.Tables.Add(GetCustomers())
  dataSet.Tables.Add(GetProducts())
  Return dataSet.CreateDataReader()
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

  Console.WriteLine()
  Console.WriteLine(table.TableName)
  Console.WriteLine("=========================")
  ' Loop through all the rows in the table.
  For Each row As DataRow In table.Rows
    For Each col As DataColumn In table.Columns
      Console.Write(row(col).ToString() & " ")
    Next
    Console.WriteLine()
  Next
End Sub

Hinweise

Die Load Methode bietet eine Technik zum Ausfüllen eines einzelnen DataTable mit Daten, die aus einer IDataReader Instanz abgerufen werden. Diese Methode bietet die gleiche Funktionalität, ermöglicht ihnen jedoch das Laden mehrerer Resultsets aus einer IDataReader in mehrere Tabellen innerhalb einer DataSetTabelle.

Hinweis

Der Ladevorgang schlägt fehl, InvalidOperationException wenn eine der Quelldatenspalten in den eingehenden reader Spalten berechnet wird.

Mit dem loadOption Parameter können Sie angeben, wie die importierten Daten mit vorhandenen Daten interagieren sollen, und es kann sich um beliebige Werte aus der LoadOption Enumeration handeln. Weitere Informationen zur Verwendung dieses Parameters finden Sie in der Load Dokumentation zur Methode.

Mit dem tables Parameter können Sie ein Array von Tabellennamen angeben, das die Reihenfolge der Tabellen angibt, die den einzelnen vom Leser geladenen Resultsets entsprechen. Die Load Methode versucht, eine Tabelle innerhalb des DataSet übereinstimmenden Namens im Array der Tabellennamen in der Reihenfolge zu finden. Wenn eine übereinstimmende Tabelle gefunden wird, wird diese Tabelle mit dem Inhalt des aktuellen Resultsets geladen. Wenn keine übereinstimmende Tabelle gefunden wird, wird eine Tabelle mit dem im Array der Tabellennamen angegebenen Namen erstellt, und das Schema der neuen Tabelle wird aus dem Resultset abgeleitet. Nach jedem Resultset wechselt die Load Methode zum nächsten Resultset innerhalb des Lesers, bis keine weiteren Resultsets vorhanden sind.

Der standardnamespace, DataSetder , falls vorhanden, zugeordnet ist, ist jedem neu erstellten DataTablezugeordnet. Das Namensauflösungsschema für diese Methode ist identisch mit der Fill Methode der DbDataAdapter Klasse.

Weitere Informationen

Gilt für:

Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])

Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs
Quelle:
DataSet.cs

Füllt einen DataSet Wert mit Werten aus einer Datenquelle mithilfe der bereitgestellten IDataReaderDatenquelle, wobei ein Array von DataTable Instanzen verwendet wird, um die Schema- und Namespaceinformationen zu liefern.

public:
 virtual void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, System::Data::FillErrorEventHandler ^ errorHandler, ... cli::array <System::Data::DataTable ^> ^ tables);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")]
public virtual void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler? errorHandler, params System.Data.DataTable[] tables);
public virtual void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler? errorHandler, params System.Data.DataTable[] tables);
public virtual void Load(System.Data.IDataReader reader, System.Data.LoadOption loadOption, System.Data.FillErrorEventHandler errorHandler, params System.Data.DataTable[] tables);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")>]
abstract member Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
override this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
abstract member Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
override this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.FillErrorEventHandler * System.Data.DataTable[] -> unit
Public Overridable Sub Load (reader As IDataReader, loadOption As LoadOption, errorHandler As FillErrorEventHandler, ParamArray tables As DataTable())

Parameter

reader
IDataReader

Ein IDataReader Ergebnissatz, der mindestens ein Resultsets bereitstellt.

loadOption
LoadOption

Ein Wert aus der Aufzählung, der LoadOption angibt, wie Zeilen bereits in den Instanzen innerhalb der DataTableDataSet Auflistung mit eingehenden Zeilen kombiniert werden, die denselben Primärschlüssel aufweisen.

errorHandler
FillErrorEventHandler

Ein FillErrorEventHandler Delegat, der aufgerufen werden soll, wenn beim Laden von Daten ein Fehler auftritt.

tables
DataTable[]

Ein Array von DataTable Instanzen, aus denen die Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[]) Methode Namen- und Namespaceinformationen abruft.

Attribute

Beispiele

Das folgende Beispiel fügt einer Tabelle eine DataSetTabelle hinzu und versucht dann, die Load Methode zum Laden von Daten aus einem DataTableReader , das ein inkompatibles Schema enthält, zu verwenden. Anstatt den Fehler abzufangen, verwendet dieses Beispiel eine FillErrorEventHandler Stellvertretung, um den Fehler zu untersuchen und zu behandeln. Die Ausgabe wird im Konsolenfenster angezeigt.

static void Main()
{
    // Attempt to load data from a data reader in which
    // the schema is incompatible with the current schema.
    // If you use exception handling, you won't get the chance
    // to examine each row, and each individual table,
    // as the Load method progresses.
    // By taking advantage of the FillErrorEventHandler delegate,
    // you can interact with the Load process as an error occurs,
    // attempting to fix the problem, or simply continuing or quitting
    // the Load process.:
    DataSet dataSet = new DataSet();
    DataTable table = GetIntegerTable();
    dataSet.Tables.Add(table);
    DataTableReader reader = new DataTableReader(GetStringTable());
    dataSet.Load(reader, LoadOption.OverwriteChanges,
        FillErrorHandler, table);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
}

private static DataTable GetIntegerTable()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new DataTable();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(int));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { 4 });
    table.Rows.Add(new object[] { 5 });
    table.AcceptChanges();
    return table;
}

private static DataTable GetStringTable()
{
    // Create sample Customers table, in order
    // to demonstrate the behavior of the DataTableReader.
    DataTable table = new DataTable();

    // Create two columns, ID and Name.
    DataColumn idColumn = table.Columns.Add("ID", typeof(string));

    // Set the ID column as the primary key column.
    table.PrimaryKey = new DataColumn[] { idColumn };

    table.Rows.Add(new object[] { "Mary" });
    table.Rows.Add(new object[] { "Andy" });
    table.Rows.Add(new object[] { "Peter" });
    table.AcceptChanges();
    return table;
}

static void FillErrorHandler(object sender, FillErrorEventArgs e)
{
    // You can use the e.Errors value to determine exactly what
    // went wrong.
    if (e.Errors.GetType() == typeof(System.FormatException))
    {
        Console.WriteLine("Error when attempting to update the value: {0}",
            e.Values[0]);
    }

    // Setting e.Continue to True tells the Load
    // method to continue trying. Setting it to False
    // indicates that an error has occurred, and the
    // Load method raises the exception that got
    // you here.
    e.Continue = true;
}
Sub Main()
  Dim dataSet As New DataSet
  Dim table As New DataTable()

  ' Attempt to load data from a data reader in which
  ' the schema is incompatible with the current schema.
  ' If you use exception handling, you won't get the chance
  ' to examine each row, and each individual table,
  ' as the Load method progresses.
  ' By taking advantage of the FillErrorEventHandler delegate,
  ' you can interact with the Load process as an error occurs,
  ' attempting to fix the problem, or simply continuing or quitting
  ' the Load process.:
  dataSet = New DataSet()
  table = GetIntegerTable()
  dataSet.Tables.Add(table)
  Dim reader As New DataTableReader(GetStringTable())
  dataSet.Load(reader, LoadOption.OverwriteChanges, _
      AddressOf FillErrorHandler, table)

  Console.WriteLine("Press any key to continue.")
  Console.ReadKey()
End Sub

Private Sub FillErrorHandler(ByVal sender As Object, _
  ByVal e As FillErrorEventArgs)
  ' You can use the e.Errors value to determine exactly what
  ' went wrong.
  If e.Errors.GetType Is GetType(System.FormatException) Then
    Console.WriteLine("Error when attempting to update the value: {0}", _
      e.Values(0))
  End If

  ' Setting e.Continue to True tells the Load
  ' method to continue trying. Setting it to False
  ' indicates that an error has occurred, and the 
  ' Load method raises the exception that got 
  ' you here.
  e.Continue = True
End Sub

Private Function GetIntegerTable() As DataTable
  ' Create sample table with a single Int32 column.
  Dim table As New DataTable

  Dim idColumn As DataColumn = table.Columns.Add("ID", _
      GetType(Integer))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {4})
  table.Rows.Add(New Object() {5})
  table.TableName = "IntegerTable"
  table.AcceptChanges()
  Return table
End Function

Private Function GetStringTable() As DataTable
  ' Create sample table with a single String column.
  Dim table As New DataTable

  Dim idColumn As DataColumn = table.Columns.Add("ID", _
      GetType(String))

  ' Set the ID column as the primary key column.
  table.PrimaryKey = New DataColumn() {idColumn}

  table.Rows.Add(New Object() {"Mary"})
  table.Rows.Add(New Object() {"Andy"})
  table.Rows.Add(New Object() {"Peter"})
  table.AcceptChanges()
  Return table
End Function

Private Sub PrintColumns( _
   ByVal table As DataTable)

  ' Loop through all the rows in the DataTableReader.
  For Each row As DataRow In table.Rows
    For Each col As DataColumn In table.Columns
      Console.Write(row(col).ToString() & " ")
    Next
    Console.WriteLine()
  Next
End Sub

Hinweise

Die Load Methode bietet eine Technik zum Ausfüllen eines einzelnen DataTable mit Daten, die aus einer IDataReader Instanz abgerufen werden. Diese Methode bietet die gleiche Funktionalität, ermöglicht ihnen jedoch das Laden mehrerer Resultsets aus einer IDataReader in mehrere Tabellen innerhalb einer DataSetTabelle.

Hinweis

Der Ladevorgang schlägt fehl, InvalidOperationException wenn eine der Quelldatenspalten in den eingehenden reader Spalten berechnet wird.

Mit dem loadOption Parameter können Sie angeben, wie die importierten Daten mit vorhandenen Daten interagieren sollen, und es kann sich um beliebige Werte aus der LoadOption Enumeration handeln. Weitere Informationen zur Verwendung dieses Parameters finden Sie in der DataTableLoad Dokumentation zur Methode.

Der errorHandler Parameter ist ein FillErrorEventHandler Delegat, der auf eine Prozedur verweist, die aufgerufen wird, wenn beim Laden von Daten ein Fehler auftritt. Der FillErrorEventArgs an die Prozedur übergebene Parameter stellt Eigenschaften bereit, mit denen Sie Informationen zu dem aufgetretenen Fehler, der aktuellen Datenzeile und dem Gefüllten DataTable abrufen können. Wenn Sie diesen Delegatmechanismus anstelle eines einfacheren Try/Catch-Blocks verwenden, können Sie den Fehler ermitteln, die Situation behandeln und die Verarbeitung fortsetzen, wenn Sie möchten. Der FillErrorEventArgs Parameter stellt eine Continue Eigenschaft bereit: Legen Sie diese Eigenschaft fest, um true anzugeben, dass Sie den Fehler behandelt haben und die Verarbeitung fortsetzen möchten. Legen Sie die Eigenschaft so false fest, dass Sie die Verarbeitung anhalten möchten. Beachten Sie, dass das Festlegen der Eigenschaft false dazu führt, dass der Code, der das Problem ausgelöst hat, eine Ausnahme auslöste.

Mit dem tables Parameter können Sie ein Array von DataTable Instanzen angeben, das die Reihenfolge der Tabellen angibt, die den einzelnen vom Leser geladenen Resultsets entsprechen. Die Load Methode füllt jede bereitgestellte DataTable Instanz mit Daten aus einem einzelnen Resultset aus dem Quelldatenleser aus. Nach jedem Resultset wechselt die Load Methode zum nächsten Resultset innerhalb des Lesers, bis keine weiteren Resultsets vorhanden sind.

Das Namensauflösungsschema für diese Methode ist identisch mit der Fill Methode der DbDataAdapter Klasse.

Weitere Informationen

Gilt für: