Share via


DataSet İçeriklerini Kopyalama

Özgün verileri etkilemeden verilerle çalışabilmek veya Bir DataSet'ten verilerin bir alt kümesiyle çalışmak için bir kopyasını DataSet oluşturabilirsiniz. DataSet'i kopyalarken şunları yapabilirsiniz:

  • Şema, veriler, satır durumu bilgileri ve satır sürümleri de dahil olmak üzere DataSet'in tam bir kopyasını oluşturun.

  • Var olan bir DataSet'in şemasını içeren, ancak yalnızca değiştirilmiş satırları içeren bir DataSet oluşturun. Değiştirilmiş olan tüm satırları döndürebilir veya belirli bir DataRowState belirtebilirsiniz. Satır durumları hakkında daha fazla bilgi için bkz . Satır Durumları ve Satır Sürümleri.

  • Herhangi bir satır kopyalamadan yalnızca DataSet'in şemasını veya ilişkisel yapısını kopyalayın. Satırlar kullanılarak ImportRowvar olan DataTable bir satıra aktarılabilir.

DataSet'in hem şema hem de verileri içeren tam bir kopyasını oluşturmak için DataSet yöntemini kullanınCopy. Aşağıdaki kod örneğinde DataSet'in tam kopyasının nasıl oluşturulacağı gösterilmektedir.

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

Şemayı ve yalnızca Eklenen, Değiştirilen veya Silinen satırları temsil eden verileri içeren bir DataSet kopyası oluşturmak için DataSet yöntemini kullanınGetChanges. GetChanges'i, GetChanges çağrılırken bir DataRowState değeri geçirerek yalnızca belirtilen satır durumuna sahip satırları döndürmek için de kullanabilirsiniz. Aşağıdaki kod örneğinde GetChanges çağrılırken DataRowState'in nasıl geçirilmesi gösterilmektedir.

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

DataSet'in yalnızca şema içeren bir kopyasını oluşturmak için DataSet yöntemini kullanınClone. Ayrıca, DataTable'ın ImportRow yöntemini kullanarak kopyalanan DataSet'evar olan satırları ekleyebilirsiniz. ImportRow belirtilen tabloya veri, satır durumu ve satır sürümü bilgileri ekler. Sütun değerleri yalnızca sütun adının eşleştiği ve veri türünün uyumlu olduğu durumlarda eklenir.

Aşağıdaki kod örneği, DataSet'in bir kopyasını oluşturur ve ardından CountryRegion sütununun "Germany" değerine sahip olduğu müşteriler için dataset kopyasındaki Müşteriler tablosuna özgün DataSet'ten satırları ekler.

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

Ayrıca bkz.