Freigeben über


Kopieren von DataSet-Inhalten

Sie können eine Kopie von DataSet erstellen, sodass Sie mit Daten arbeiten können, ohne die ursprünglichen Daten zu beeinflussen, oder mit einer Teilmenge der Daten aus einem DataSet arbeiten können. Beim Kopieren eines DataSets können Sie:

  • Erstellen Sie eine genaue Kopie des DataSets, einschließlich Schema,Daten, Zeilenstatusinformationen und Zeilenversionen.

  • Erstellen Sie ein DataSet Objekt, das das Schema eines vorhandenen DataSets enthält, aber nur Zeilen, die geändert wurden. Sie können alle Geänderten Zeilen zurückgeben oder einen bestimmten DataRowState angeben. Weitere Informationen zu Zeilenzuständen finden Sie unter Zeilenzustände und Zeilenversionen.

  • Kopieren Sie nur das Schema oder die relationale Struktur von DataSet, ohne Zeilen zu kopieren. Zeilen können in eine vorhandene DataTable mit ImportRow importiert werden.

Verwenden Sie die Copy Methode des DataSet, um eine genaue Kopie der DataSet zu erstellen, die sowohl Schema als auch Daten enthält. Das folgende Codebeispiel zeigt, wie eine genaue Kopie des DataSets erstellt wird.

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

Wenn Sie eine Kopie eines DataSet Elements erstellen möchten, das Schema und nur die Daten enthält, die hinzugefügte, geänderte oder Deleted Zeilen darstellen, verwenden Sie die GetChanges Methode des DataSet. Sie können auch verwendenGetChanges, um nur Zeilen mit einem angegebenen Zeilenstatus zurückzugeben, indem Sie beim Aufrufen von DataRowState einen Wert übergeben. Das folgende Codebeispiel zeigt, wie Sie eine DataRowState beim Aufrufen von GetChanges übergeben.

' 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 von DataSet, um eine Kopie von DataSet zu erstellen, die nur das Schema enthält. Sie können auch vorhandene Zeilen zu der geklonten DataSet mithilfe der ImportRow-Methode der DataTable hinzufügen. ImportRow Fügt der angegebenen Tabelle Daten, Zeilenstatus und Zeilenversionsinformationen hinzu. Spaltenwerte werden nur hinzugefügt, wenn der Spaltenname übereinstimmt und der Datentyp kompatibel ist.

Im folgenden Codebeispiel wird ein Klon eines DataSet erstellt und dann die Zeilen aus dem Original DataSet zur Customers-Tabelle im DataSet-Klon hinzugefügt, für Kunden, bei denen die CountryRegion-Spalte den Wert "Deutschland" hat.

Dim customerDataSet As New DataSet
        customerDataSet.Tables.Add(New DataTable("Customers"))
        customerDataSet.Tables("Customers").Columns.Add("Name", GetType(String))
        customerDataSet.Tables("Customers").Columns.Add("CountryRegion", GetType(String))
        customerDataSet.Tables("Customers").Rows.Add("Juan", "Spain")
        customerDataSet.Tables("Customers").Rows.Add("Johann", "Germany")
        customerDataSet.Tables("Customers").Rows.Add("John", "UK")

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 customerDataSet = new DataSet();
customerDataSet.Tables.Add(new DataTable("Customers"));
customerDataSet.Tables["Customers"].Columns.Add("Name", typeof(string));
customerDataSet.Tables["Customers"].Columns.Add("CountryRegion", typeof(string));
customerDataSet.Tables["Customers"].Rows.Add("Juan", "Spain");
customerDataSet.Tables["Customers"].Rows.Add("Johann", "Germany");
customerDataSet.Tables["Customers"].Rows.Add("John", "UK");

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