Kopírování obsahu datové sady

Můžete vytvořit kopii, DataSet abyste mohli pracovat s daty, aniž by to mělo vliv na původní data, nebo pracovat s podmnožinou dat z datové sady. Při kopírování datové sady můžete:

  • Vytvořte přesnou kopii datové sady, včetně schématu, dat, informací o stavu řádku a verzí řádků.

  • Vytvořte datovou sadu , která obsahuje schéma existující datové sady, ale pouze řádky, které byly změněny. Můžete vrátit všechny řádky, které byly změněny, nebo zadat konkrétní DataRowState. Další informace o stavech řádků naleznete v tématu Stavy řádků a Verze řádků.

  • Zkopírujte schéma nebo relační strukturu pouze datové sady , aniž byste museli kopírovat žádné řádky. Řádky lze importovat do existujícího DataTable pomocí ImportRow.

Pokud chcete vytvořit přesnou kopii datové sady , která obsahuje schéma i data, použijte Copy metodu DataSet. Následující příklad kódu ukazuje, jak vytvořit přesnou kopii DataSet.

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

Chcete-li vytvořit kopii datové sady , která obsahuje schéma a pouze data představující přidané, změněné nebo odstraněné řádky, použijte GetChanges metodu DataSet. Funkci GetChanges můžete použít také k vrácení pouze řádků se zadaným stavem řádku předáním hodnoty DataRowState při volání GetChanges. Následující příklad kódu ukazuje, jak předat DataRowState při volání GetChanges.

' 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);  

Chcete-li vytvořit kopii datové sady , která obsahuje pouze schéma, použijte Clone metodu DataSet. Do klonované datové sady můžete také přidat existující řádky pomocí metody ImportRow dataTable. ImportRow přidá do zadané tabulky data, stav řádku a informace o verzi řádku. Hodnoty sloupců se přidají pouze tam, kde se název sloupce shoduje a datový typ je kompatibilní.

Následující příklad kódu vytvoří klon datové sady a pak přidá řádky z původní datové sady do tabulky Customers ve klonu Datové sady pro zákazníky, kde sloupec CountryRegion má hodnotu "Německo".

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);  

Viz také