Menyalin Konten DataSet

Anda dapat membuat salinan DataSet sehingga Anda dapat bekerja dengan data tanpa memengaruhi data asli, atau bekerja dengan subset data dari DataSet. Saat menyalin DataSet, Anda dapat:

  • Buat salinan persis DataSet, termasuk skema, data, informasi status baris, dan versi baris.

  • Buat DataSet yang berisi skema DataSet yang ada, tetapi hanya baris yang telah dimodifikasi. Anda dapat mengembalikan semua baris yang telah diubah, atau menentukan DataRowState tertentu. Untuk informasi selengkapnya tentang status baris, baca Status Baris dan Versi Baris.

  • Salin skema atau struktur relasional dari DataSet saja, tanpa menyalin baris apa pun. Baris dapat diimpor ke DataTable yang sudah ada menggunakan ImportRow.

Untuk membuat salinan persis dari DataSet yang menyertakan skema dan data, gunakan metode Copy dari DataSet. Contoh kode berikut menunjukkan cara membuat salinan persis dari DataSet.

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

Untuk membuat salinan DataSet yang menyertakan skema dan hanya data yang mewakili baris Ditambahkan, Diubah, atau Dihapus, gunakan metode GetChanges dari DataSet. Anda juga dapat menggunakan GetChanges untuk mengembalikan baris saja dengan status baris tertentu dengan meneruskan nilai DataRowState saat memanggil GetChanges. Contoh kode berikut menunjukkan cara meneruskan DataRowState saat memanggil 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);  

Untuk membuat salinan DataSet yang hanya menyertakan skema, gunakan metode Clone dari DataSet. Anda juga dapat menambahkan baris yang ada ke DataSet yang digandakan menggunakan metode ImportRow dari DataTable. ImportRow menambahkan data, status baris, dan informasi versi baris ke tabel yang ditentukan. Nilai kolom ditambahkan hanya ketika nama kolom cocok dan jenis datanya kompatibel.

Contoh kode berikut membuat tiruan dari DataSet dan kemudian menambahkan baris dari DataSet asli ke tabel Pelanggan di klon DataSet untuk pelanggan yang kolom CountryRegion-nya memiliki nilai "Jerman".

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

Lihat juga