DataSet.Load DataSet.Load DataSet.Load Method

Definition

Füllt eine DataSet mit Werten aus einer Datenquelle, die den angegebenen IDataReader verwendet.Fills a DataSet with values from a data source using the supplied IDataReader.

Überlädt

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

Füllt ein DataSet mit Werten aus einer Datenquelle. Dazu werden der bereitgestellte IDataReader sowie ein Array von DataTable-Instanzen verwendet, mit dem Schema- und Namespaceinformationen bereitgestellt werden.Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

Load(IDataReader, LoadOption, String[]) Load(IDataReader, LoadOption, String[]) Load(IDataReader, LoadOption, String[])

Füllt ein DataSet mit Werten aus einer Datenquelle. Dazu wird der bereitgestellte IDataReader sowie ein Array von Zeichenfolgen verwendet, mit dem die Namen der Tabellen im DataSet bereitgestellt werden.Fills a DataSet with values from a data source using the supplied IDataReader, using an array of strings to supply the names for the tables within the DataSet.

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

Füllt ein DataSet mit Werten aus einer Datenquelle. Dazu werden der bereitgestellte IDataReader sowie ein Array von DataTable-Instanzen verwendet, mit dem Schema- und Namespaceinformationen bereitgestellt werden.Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

Hinweise

Die Load -Methode bietet eine Technik zum Ausfüllen eines DataTable einzelnen mit Daten, die von IDataReader einer-Instanz abgerufen werden.The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. Diese Methode bietet die gleiche Funktionalität, ermöglicht Ihnen jedoch, mehrere Resultsets aus einem IDataReader in mehrere Tabellen innerhalb einer DataSetzu laden.This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

Wenn die DataSet bereits Zeilen enthält, werden die eingehenden Daten aus der Datenquelle mit den vorhandenen Zeilen zusammengeführt.If the DataSet already contains rows, the incoming data from the data source is merged with the existing rows.

Die Load -Methode kann in verschiedenen gängigen Szenarien verwendet werden, wobei alle Daten aus einer angegebenen Datenquelle bezogen und dem aktuellen Datencontainer (in diesem Fall a DataSet) hinzugefügt werden.The Load method can be used in several common scenarios, all centered around getting data from a specified data source and adding it to the current data container (in this case, a DataSet). In diesen Szenarien wird die Standardverwendung DataSetfür eine beschrieben und deren Update-und Zusammenschluss Verhalten beschrieben.These scenarios describe standard usage for a DataSet, describing its update and merge behavior.

Eine DataSet Synchronisierung oder Aktualisierung mit einer einzelnen primären Datenquelle.A DataSet synchronizes or updates with a single primary data source. Der DataSet verfolgt Änderungen, sodass die Synchronisierung mit der primären Datenquelle möglich ist.The DataSet tracks changes, allowing synchronization with the primary data source. Außerdem kann eine DataSet inkrementelle Daten aus einer oder mehreren sekundären Datenquellen akzeptieren.In addition, a DataSet can accept incremental data from one or more secondary data sources. Der DataSet ist nicht verantwortlich für das Nachverfolgen von Änderungen, um die Synchronisierung mit der sekundären Datenquelle zuzulassen.The DataSet isn't responsible for tracking changes in order to allow synchronization with the secondary data source.

Bei diesen beiden hypothetischen Datenquellen erfordert ein Benutzer wahrscheinlich eines der folgenden Verhaltensweisen:Given these two hypothetical data sources, a user is likely to require one of the following behaviors:

  • Initialisieren DataSet von einer primären Datenquelle aus.Initialize DataSet from a primary data source. In diesem Szenario möchte der Benutzer eine leere DataSet mit Werten aus der primären Datenquelle initialisieren.In this scenario, the user wants to initialize an empty DataSet with values from the primary data source. Der Inhalt einer oder mehrerer Datentabelle wird geändert.One or more DataTable's contents are modified. Später beabsichtigt der Benutzer, Änderungen an die primäre Datenquelle zurückzugeben.Later the user intends to propagate changes back to the primary data source.

  • Behalten Sie Änderungen bei, und synchronisieren Sie Sie von der primären Datenquelle erneut.Preserve changes and re-synchronize from the primary data source. In diesem Szenario möchte der Benutzer das DataSet vorherige Szenario durchführen und eine inkrementelle Synchronisierung mit der primären Datenquelle durchführen, wobei die DataSetin vorgenommenen Änderungen beibehalten werden.In this scenario, the user wants to take the DataSet filled in the previous scenario and perform an incremental synchronization with the primary data source, preserving modifications made in the DataSet.

  • Inkrementeller Datenfeed aus sekundären Datenquellen.Incremental data feed from secondary data sources. 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 zurückgeben.In this scenario, the user wants to merge changes from one or more secondary data sources, and propagate those changes back to the primary data source.

Die Load -Methode macht alle diese Szenarien möglich.The Load method makes all these scenarios possible. Diese Methode ermöglicht es Ihnen, einen Parameter für die Lade Option anzugeben, der angibt, DataTable wie bereits in einem bereits in einer zu ladende Zeilen kombiniert werden.This method allows you to specify a load option parameter, indicating how rows already in a DataTable combine with rows being loaded. In der folgenden Tabelle werden die drei von der LoadOption -Enumeration bereitgestellten Lade Optionen beschrieben.The following table describes the three load options provided by the LoadOption enumeration. 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.In each case, the description indicates the behavior when the primary key of a row in the incoming data matches the primary key of an existing row.

Option LadenLoad Option BeschreibungDescription
PreserveChanges (Standard)PreserveChanges (default) Aktualisiert die ursprüngliche Version der Zeile mit dem Wert der eingehenden Zeile.Updates the original version of the row with the value of the incoming row.
OverwriteChanges Aktualisiert die aktuelle und die ursprüngliche Version der Zeile mit dem Wert der eingehenden Zeile.Updates the current and original versions of the row with the value of the incoming row.
Upsert Aktualisiert die aktuelle Version der Zeile mit dem Wert der eingehenden Zeile.Updates the current version of the row with the value of the incoming row.

Im Allgemeinen sind die PreserveChanges Optionen OverwriteChanges und für Szenarien gedacht, in denen der DataSet Benutzer und seine Änderungen mit der primären Datenquelle synchronisieren muss.In general, the PreserveChanges and OverwriteChanges options are intended for scenarios in which the user needs to synchronize the DataSet and its changes with the primary data source. Die Upsert -Option vereinfacht das aggregierten ändern von einer oder mehreren sekundären Datenquellen.The Upsert option facilitates aggregating changes from one or more secondary data sources.

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

Füllt ein DataSet mit Werten aus einer Datenquelle. Dazu werden der bereitgestellte IDataReader sowie ein Array von DataTable-Instanzen verwendet, mit dem Schema- und Namespaceinformationen bereitgestellt werden.Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::Data::DataTable ^> ^ tables);
public void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, params System.Data.DataTable[] tables);
member this.Load : System.Data.IDataReader * System.Data.LoadOption * System.Data.DataTable[] -> unit

Parameter

reader
IDataReader IDataReader IDataReader

Ein IDataReader, der ein oder mehrere Resultsets bereitstellt.An IDataReader that provides one or more result sets.

loadOption
LoadOption LoadOption LoadOption

Ein Wert aus der LoadOption-Enumeration, der angibt, wie bereits in den DataTable-Instanzen des DataSet vorhandene Zeilen mit eingehenden Zeilen kombiniert werden, die denselben Primärschlüssel aufweisen.A value from the LoadOption enumeration that indicates how rows already in the DataTable instances within the DataSet will be combined with incoming rows that share the same primary key.

tables
DataTable[]

Ein Array von DataTable-Instanzen, aus dem die Load(IDataReader, LoadOption, DataTable[])-Methode Namens- und Namespaceinformationen abruft.An array of DataTable instances, from which the Load(IDataReader, LoadOption, DataTable[]) method retrieves name and namespace information. Jede dieser Tabellen muss ein Member der DataTableCollection sein, die in diesem DataSet enthalten ist.Each of these tables must be a member of the DataTableCollection contained by this DataSet.

Beispiele

Im folgenden Beispiel wird ein neuer DataSeterstellt, dem DataTable DataSetwerden zwei-Instanzen hinzugefügt. anschließend DataSet wird mit Load der-Methode aufgefüllt, und es DataTableReader werden Daten aus einem abgerufen, das zwei Resultsets enthält.The following example creates a new DataSet, adds two DataTable instances to the DataSet, and then fills the DataSet using the Load method, retrieving data from a DataTableReader that contains two result sets. Zum Schluss zeigt das Beispiel den Inhalt der Tabellen im Konsolenfenster an.Finally, the example displays the contents of the tables in the console window.

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 DataTable einzelnen mit Daten, die von IDataReader einer-Instanz abgerufen werden.The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. Diese Methode bietet die gleiche Funktionalität, ermöglicht Ihnen jedoch, mehrere Resultsets aus einem IDataReader in mehrere Tabellen innerhalb einer DataSetzu laden.This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

Hinweis

Beim Ladevorgang tritt ein InvalidOperationException Fehler auf, wenn eine der Quelldaten Spalten im eingehenden reader berechnete Spalten ist.The load operation will fail with an InvalidOperationException if any of the source data columns in the incoming reader are computed columns.

Mithilfe loadOption des-Parameters können Sie angeben, wie die importierten Daten mit vorhandenen Daten interagieren sollen. dabei kann es sich um beliebige Werte aus LoadOption der-Enumeration handeln.The loadOption parameter allows you to specify how you want the imported data to interact with existing data, and can be any of the values from the LoadOption enumeration. Weitere Informationen zur Verwendung dieses DataTable Parameters finden Sie in der Dokumentation zur Load -Methode.See the documentation for the DataTableLoad method for more information on using this parameter.

Mit tables dem-Parameter können Sie ein Array von DataTable -Instanzen angeben, um die Reihenfolge der Tabellen anzugeben, die den einzelnen Resultsets entsprechen, die vom Reader geladen werden.The tables parameter allows you to specify an array of DataTable instances, indicating the order of the tables corresponding to each result set loaded from the reader. Die Load -Methode füllt jede DataTable angegebene-Instanz mit Daten aus einem einzelnen Resultset aus dem Quelldaten Reader.The Load method fills each supplied DataTable instance with data from a single result set from the source data reader. Nach jedem Resultset wechselt Load die Methode zum nächsten Resultset innerhalb des Readers, bis keine weiteren Resultsets mehr vorhanden sind.After each result set, the Load method moves on to the next result set within the reader, until there are no more result sets.

Das namens Auflösungs Schema für diese Methode ist identisch mit dem, gefolgt von der Fill -Methode DbDataAdapter der-Klasse.The name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

Siehe auch

Load(IDataReader, LoadOption, String[]) Load(IDataReader, LoadOption, String[]) Load(IDataReader, LoadOption, String[])

Füllt ein DataSet mit Werten aus einer Datenquelle. Dazu wird der bereitgestellte IDataReader sowie ein Array von Zeichenfolgen verwendet, mit dem die Namen der Tabellen im DataSet bereitgestellt werden.Fills a DataSet with values from a data source using the supplied IDataReader, using an array of strings to supply the names for the tables within the DataSet.

public:
 void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, ... cli::array <System::String ^> ^ tables);
public void Load (System.Data.IDataReader reader, System.Data.LoadOption loadOption, params string[] tables);
member this.Load : System.Data.IDataReader * System.Data.LoadOption * string[] -> unit

Parameter

reader
IDataReader IDataReader IDataReader

Ein IDataReader, der ein oder mehrere Resultsets bereitstellt.An IDataReader that provides one or more result sets.

loadOption
LoadOption LoadOption LoadOption

Ein Wert aus der LoadOption-Enumeration, der angibt, wie bereits in den DataTable-Instanzen des DataSet vorhandene Zeilen mit eingehenden Zeilen kombiniert werden, die denselben Primärschlüssel aufweisen.A value from the LoadOption enumeration that indicates how rows already in the DataTable instances within the DataSet will be combined with incoming rows that share the same primary key.

tables
String[]

Ein Zeichenfolgenarray, aus dem die Load-Methode Tabellennameninformationen abruft.An array of strings, from which the Load method retrieves table name information.

Beispiele

Im folgenden Beispiel für eine Konsolenanwendung werden zunächst Tabellen erstellt und Daten aus einem Reader DataSetmithilfe der Load -Methode in einen geladen.The following Console application example first creates tables and loads data from a reader into a DataSet, using the Load method. Im Beispiel werden dann Tabellen zu einem DataSet hinzugefügt, und es wird versucht, die Tabellen DataTableReadermit Daten aus einem auszufüllen.The example then adds tables to a DataSet and attempts to fill the tables with data from a 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 dem als Parameter übergebenen Namen entspricht.In this example, because the parameters passed to the Load method indicate a table name that does not exist, the Load method creates a new table to match the name passed as a parameter. Nachdem die Daten geladen wurden, wird im Beispiel der Inhalt aller Tabellen im Konsolenfenster angezeigt.Once the data has been loaded, the example displays the contents of all its tables in the Console window.

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 DataTable einzelnen mit Daten, die von IDataReader einer-Instanz abgerufen werden.The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. Diese Methode bietet die gleiche Funktionalität, ermöglicht Ihnen jedoch, mehrere Resultsets aus einem IDataReader in mehrere Tabellen innerhalb einer DataSetzu laden.This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

Hinweis

Beim Ladevorgang tritt ein InvalidOperationException Fehler auf, wenn eine der Quelldaten Spalten im eingehenden reader berechnete Spalten ist.The load operation will fail with an InvalidOperationException if any of the source data columns in the incoming reader are computed columns.

Mithilfe loadOption des-Parameters können Sie angeben, wie die importierten Daten mit vorhandenen Daten interagieren sollen. dabei kann es sich um beliebige Werte aus LoadOption der-Enumeration handeln.The loadOption parameter allows you to specify how you want the imported data to interact with existing data, and can be any of the values from the LoadOption enumeration. Weitere Informationen zur Verwendung dieses Load Parameters finden Sie in der Dokumentation zur-Methode.See the documentation for the Load method for more information on using this parameter.

Der tables -Parameter ermöglicht es Ihnen, ein Array von Tabellennamen anzugeben, das die Reihenfolge der Tabellen angibt, die den einzelnen Resultsets entsprechen, die vom Reader geladen werden.The tables parameter allows you to specify an array of table names, indicating the order of the tables corresponding to each result set loaded from the reader. Die Load -Methode versucht, eine Tabelle innerhalb der DataSet zu suchen, die mit dem Namen übereinstimmt, der im Array von Tabellennamen in der angegebenen Reihenfolge gefunden wurdeThe Load method attempts to find a table within the DataSet matching the name found in the array of table names, in order. Wenn eine übereinstimmende Tabelle gefunden wird, wird diese Tabelle mit dem Inhalt des aktuellen Resultsets geladen.If a matching table is found, that table is loaded with the content of the current result set. Wenn keine übereinstimmende Tabelle gefunden wird, wird eine Tabelle mit dem Namen erstellt, der im Array von Tabellennamen angegeben ist, und das Schema der neuen Tabelle wird aus dem Resultset abgeleitet.If no matching table is found, a table is created using the name supplied in the array of table names, and the new table's schema is inferred from the result set. Nach jedem Resultset wechselt Load die Methode zum nächsten Resultset innerhalb des Readers, bis keine weiteren Resultsets mehr vorhanden sind.After each result set, the Load method moves on to the next result set within the reader, until there are no more result sets.

Der Standard Namespace DataSet, der zugeordnet ist, ist ggf. den einzelnen neu DataTableerstellten zugeordnet.The default namespace associated with DataSet, if any, is associated with each newly created DataTable. Das namens Auflösungs Schema für diese Methode ist identisch mit dem, gefolgt von der Fill -Methode DbDataAdapter der-Klasse.The name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

Siehe auch

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

Füllt ein DataSet mit Werten aus einer Datenquelle. Dazu werden der bereitgestellte IDataReader sowie ein Array von DataTable-Instanzen verwendet, mit dem Schema- und Namespaceinformationen bereitgestellt werden.Fills a DataSet with values from a data source using the supplied IDataReader, using an array of DataTable instances to supply the schema and namespace information.

public:
 virtual void Load(System::Data::IDataReader ^ reader, System::Data::LoadOption loadOption, System::Data::FillErrorEventHandler ^ errorHandler, ... cli::array <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);
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

Parameter

reader
IDataReader IDataReader IDataReader

Ein IDataReader, der ein oder mehrere Resultsets bereitstellt.An IDataReader that provides one or more result sets.

loadOption
LoadOption LoadOption LoadOption

Ein Wert aus der LoadOption-Enumeration, der angibt, wie bereits in den DataTable-Instanzen des DataSet vorhandene Zeilen mit eingehenden Zeilen kombiniert werden, die denselben Primärschlüssel aufweisen.A value from the LoadOption enumeration that indicates how rows already in the DataTable instances within the DataSet will be combined with incoming rows that share the same primary key.

errorHandler
FillErrorEventHandler FillErrorEventHandler FillErrorEventHandler

Ein FillErrorEventHandler-Delegat, der aufgerufen wird, wenn beim Laden von Daten Fehler auftreten.A FillErrorEventHandler delegate to call when an error occurs while loading data.

tables
DataTable[]

Ein Array von DataTable-Instanzen, aus dem die Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[])-Methode Namens- und Namespaceinformationen abruft.An array of DataTable instances, from which the Load(IDataReader, LoadOption, FillErrorEventHandler, DataTable[]) method retrieves name and namespace information.

Beispiele

Im folgenden Beispiel DataSetwird einer Tabelle hinzugefügt, und anschließend wird versucht, die Load -Methode zum Laden von Daten DataTableReader aus einem zu verwenden, das ein nicht kompatibles Schema enthält.The following example adds a table to a DataSet, and then attempts to use the Load method to load data from a DataTableReader that contains an incompatible schema. Anstatt den Fehler abzufangen, verwendet dieses Beispiel einen FillErrorEventHandler Delegaten, um den Fehler zu untersuchen und zu behandeln.Rather than trapping the error, this example uses a FillErrorEventHandler delegate to investigate and handle the error. Die Ausgabe wird im Konsolenfenster angezeigt.The output is displayed in the console window.

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 DataTable einzelnen mit Daten, die von IDataReader einer-Instanz abgerufen werden.The Load method provides a technique for filling a single DataTable with data, retrieved from an IDataReader instance. Diese Methode bietet die gleiche Funktionalität, ermöglicht Ihnen jedoch, mehrere Resultsets aus einem IDataReader in mehrere Tabellen innerhalb einer DataSetzu laden.This method provides the same functionality, but allows you to load multiple result sets from an IDataReader into multiple tables within a DataSet.

Hinweis

Beim Ladevorgang tritt ein InvalidOperationException Fehler auf, wenn eine der Quelldaten Spalten im eingehenden reader berechnete Spalten ist.The load operation will fail with an InvalidOperationException if any of the source data columns in the incoming reader are computed columns.

Mithilfe loadOption des-Parameters können Sie angeben, wie die importierten Daten mit vorhandenen Daten interagieren sollen. dabei kann es sich um beliebige Werte aus LoadOption der-Enumeration handeln.The loadOption parameter allows you to specify how you want the imported data to interact with existing data, and can be any of the values from the LoadOption enumeration. Weitere Informationen zur Verwendung dieses DataTable Parameters finden Sie in der Dokumentation zur Load -Methode.See the documentation for the DataTableLoad method for more information on using this parameter.

Der errorHandler -Parameter ist FillErrorEventHandler ein Delegat, der auf eine Prozedur verweist, die aufgerufen wird, wenn beim Laden von Daten ein Fehler auftritt.The errorHandler parameter is a FillErrorEventHandler delegate that refers to a procedure that is called when an error occurs while loading data. Der FillErrorEventArgs -Parameter, der an die Prozedur übergeben wird, bietet Eigenschaften, mit denen Sie Informationen zu dem aufgetretenen Fehler, der aktuellen Daten Zeile DataTable und dem ausgefüllten abrufen können.The FillErrorEventArgs parameter passed to the procedure provides properties that allow you to retrieve information about the error that occurred, the current row of data, and the DataTable being filled. 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.Using this delegate mechanism, rather than a simpler try/catch block, allows you to determine the error, handle the situation, and continue processing if you like. Der FillErrorEventArgs -Parameter stellt Continue eine Eigenschaft bereit: Legen Sie true diese Eigenschaft auf fest, um anzugeben, dass der Fehler behandelt wurde und die Verarbeitung fortgesetzt false werden soll. Legen Sie die-Eigenschaft auf fest, um anzugeben, dass Sie die Verarbeitung anhalten möchten.The FillErrorEventArgs parameter supplies a Continue property: set this property to true to indicate that you have handled the error and wish to continue processing; set the property to false to indicate that you wish to halt processing. Beachten Sie, dass das Festlegen der false -Eigenschaft auf bewirkt, dass der Code, der das Problem ausgelöst hat, eine Ausnahme auslöst.Be aware that setting the property to false causes the code that triggered the problem to throw an exception.

Mit tables dem-Parameter können Sie ein Array von DataTable -Instanzen angeben, um die Reihenfolge der Tabellen anzugeben, die den einzelnen Resultsets entsprechen, die vom Reader geladen werden.The tables parameter allows you to specify an array of DataTable instances, indicating the order of the tables corresponding to each result set loaded from the reader. Die Load -Methode füllt jede DataTable angegebene-Instanz mit Daten aus einem einzelnen Resultset aus dem Quelldaten Reader.The Load method fills each supplied DataTable instance with data from a single result set from the source data reader. Nach jedem Resultset wechselt Load die Methode zum nächsten Resultset innerhalb des Readers, bis keine weiteren Resultsets mehr vorhanden sind.After each result set, the Load method moves on to the next result set within the reader, until there are no more result sets.

Das namens Auflösungs Schema für diese Methode ist identisch mit dem, gefolgt von der Fill -Methode DbDataAdapter der-Klasse.The name resolution scheme for this method is the same as that followed by the Fill method of the DbDataAdapter class.

Siehe auch

Gilt für: