Kopieren von 'DataSet'-Inhalten (ADO.NET)

Aktualisiert: November 2007

Sie können eine Kopie von DataSet erstellen. So können Sie mit den Daten arbeiten, ohne dass die ursprünglichen Daten beeinflusst werden, oder Sie können mit einer Teilmenge der Daten aus einem DataSet arbeiten. Beim Kopieren eines DataSet verfügen Sie über folgende Optionen:

  • Sie können eine exakte Kopie des DataSet erstellen, einschließlich Schema, Daten, Informationen zum Zeilenstatus und Zeilenversionen.

  • Erstellen Sie ein DataSet, in dem das Schema eines vorhandenen DataSet enthalten ist. Es sollen aber nur Zeilen vorhanden sein, die bereits geändert wurden. Sie können alle Zeilen zurückgeben, die geändert wurden, oder Sie geben einen bestimmten DataRowState an. Weitere Informationen zum Zeilenstatus finden Sie unter Zeilenstatus und Zeilenversion.

  • Sie kopieren nur das Schema oder die relationale Struktur des DataSet, ohne die darin enthaltenen Zeilen zu kopieren. Zeilen können mit ImportRow in eine vorhandeneDataTable importiert werden.

Verwenden Sie die Copy-Methode des DataSet zum Erstellen einer exakten Kopie des DataSet, die sowohl das Schema als auch die Daten enthält. Das folgende Codebeispiel veranschaulicht die Erstellung einer exakten Kopie des DataSet.

Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();

Um eine Kopie eines DataSet zu erstellen, die das Schema und nur Daten der Zeilen mit dem Status Added, Modified oder Deleted enthält, verwenden Sie die GetChanges-Methode des DataSet. Sie können mit GetChanges auch nur Zeilen mit einem bestimmten Zeilenstatus zurückgeben, indem Sie beim Aufrufen von GetChanges einen DataRowState-Wert übergeben. Im folgenden Codebeispiel wird gezeigt, wie beim Aufrufen von GetChanges ein DataRowState-Wert übergeben wird.

' Copy all changes.
Dim changeDataSet As DataSet = customerDataSet.GetChanges()
' Copy only new rows.
Dim addedDataSetAs DataSet = _
    customerDataSet.GetChanges(DataRowState.Added)
// Copy all changes.
DataSet changeDataSet = customerDataSet.GetChanges();
// Copy only new rows.
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);

Verwenden Sie die Clone-Methode des DataSet zum Erstellen einer Kopie eines DataSet, die nur das Schema enthält. Sie können dem geklonten DataSet mithilfe der ImportRow-Methode der DataTable auch vorhandene Zeilen hinzufügen.ImportRow fügt der angegebenen Tabelle Daten, den Zeilenstatus sowie Versionsinformationen hinzu. Spaltenwerte werden nur hinzugefügt, wenn der Spaltenname übereinstimmt und der Datentyp kompatibel ist.

Im folgenden Codebeispiel wird zunächst ein Klon eines DataSet erstellt. Anschließend werden die Zeilen aus dem ursprünglichen DataSet der Customers-Tabelle im DataSet-Klon für Kunden hinzugefügt, deren CountryRegion-Spalte den Wert "Germany" hat.

Dim germanyCustomers As DataSet = customerDataSet.Clone()

Dim copyRows() As DataRow = _
  customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")

Dim customerTable As DataTable = germanyCustomers.Tables("Customers")
Dim copyRow As DataRow

For Each copyRow In copyRows
  customerTable.ImportRow(copyRow)
Next
DataSet germanyCustomers = customerDataSet.Clone();

DataRow[] copyRows = 
  customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");

DataTable customerTable = germanyCustomers.Tables["Customers"];

foreach (DataRow copyRow in copyRows)
  customerTable.ImportRow(copyRow);

Siehe auch

Referenz

DataSet

DataTable

Weitere Ressourcen

'DataSets', 'DataTables' und 'DataViews' (ADO.NET)