Bagikan melalui


Mengedit data dalam himpunan data menggunakan .NET Framework

Nota

Kelas DataSet dan kelas terkait adalah teknologi .NET Framework warisan dari awal 2000-an yang memungkinkan aplikasi untuk bekerja dengan data dalam memori saat aplikasi terputus dari database. Teknologi ini sangat berguna untuk aplikasi yang memungkinkan pengguna memodifikasi data dan mempertahankan perubahan kembali ke database. Meskipun himpunan data adalah teknologi yang terbukti berhasil, pendekatan yang direkomendasikan untuk aplikasi .NET baru adalah menggunakan Entity Framework Core. Entity Framework menyediakan cara yang lebih alami untuk bekerja dengan data tabular sebagai model objek, dan memiliki antarmuka pemrograman yang lebih sederhana.

Artikel ini menjelaskan cara mengkueri dan mengedit data dalam tabel dalam himpunan data .NET Framework. Anda bisa mengedit data dalam tabel data seperti Mengedit tabel di database apa pun. Anda bisa menyisipkan, memperbarui, dan menghapus rekaman dalam tabel. Dalam formulir terikat data, Anda dapat menentukan bidang mana yang dapat diedit pengguna.

Dalam kasus tersebut, infrastruktur pengikatan data menangani semua pelacakan perubahan sehingga perubahan dapat dikirim kembali ke database. Jika Anda mengedit data secara terprogram dan ingin mengirim perubahan kembali ke database, Anda harus menggunakan objek dan metode yang melakukan pelacakan perubahan.

Selain mengubah data aktual, Anda juga bisa mengkueri DataTable untuk mengembalikan baris data tertentu. Misalnya, Anda dapat mengkueri baris individual, versi baris asli atau yang diusulkan, baris yang berubah, atau baris yang berisi kesalahan.

Prasyarat

Untuk menggunakan Visual Studio untuk mengkueri dan mengedit data dalam himpunan data .NET Framework, Anda memerlukan:

Mengedit baris dalam himpunan data

Untuk mengedit baris yang sudah ada dalam DataTable, Anda perlu menemukan yang DataRow ingin Anda edit, lalu menetapkan nilai yang diperbarui ke kolom yang diinginkan.

Jika Anda tidak mengetahui indeks baris yang ingin Anda edit, gunakan FindBy metode untuk mencari dengan kunci utama.

NorthwindDataSet.CustomersRow customersRow = 
    northwindDataSet1.Customers.FindByCustomerID("ALFKI");

customersRow.CompanyName = "Updated Company Name";
customersRow.City = "Seattle";

Setelah Mengetahui indeks baris, Anda dapat menggunakannya untuk mengakses dan mengedit baris.

northwindDataSet1.Customers[4].CompanyName = "Updated Company Name";
northwindDataSet1.Customers[4].City = "Seattle";

Menyisipkan baris baru ke dalam himpunan data

Aplikasi yang menggunakan kontrol terikat data biasanya menambahkan rekaman baru dengan menggunakan tombol Tambahkan Baru pada kontrol BindingNavigator.

Anda juga dapat menambahkan rekaman baru ke himpunan data dengan memanggil NewRow metode pada DataTable. Kemudian, tambahkan baris ke dalam koleksi DataRow (Rows).

NorthwindDataSet.CustomersRow newCustomersRow = 
    northwindDataSet1.Customers.NewCustomersRow();

newCustomersRow.CustomerID = "ALFKI";
newCustomersRow.CompanyName = "Alfreds Futterkiste";

northwindDataSet1.Customers.Rows.Add(newCustomersRow);

Menghapus rekaman dari tabel data

Anda dapat menghapus DataRow dengan memanggil Remove metode DataRowCollection, atau dengan memanggil Delete metode DataRow objek.

Metode Remove menghapus baris dari koleksi. Jika aplikasi Anda tidak perlu mengirim pembaruan kembali ke sumber data, Anda dapat menghapus rekaman dengan langsung mengakses pengumpulan baris data dengan Remove.

Sebaliknya, Delete metode ini tidak benar-benar menghapus DataRow, tetapi menandainya untuk dihapus. Penghapusan yang sebenarnya terjadi ketika Anda memanggil metode AcceptChanges. Anda dapat secara terprogram memeriksa baris mana yang ditandai untuk dihapus sebelum benar-benar menghapusnya.

Untuk menyimpan informasi yang diperlukan himpunan data untuk mengirim pembaruan ke sumber data, gunakan Delete metode untuk menghapus DataRow dari tabel data. Jika aplikasi Anda menggunakan TableAdapter atau DataAdapter, metode Update menghapus baris yang memiliki RowState dengan Deleted.

Contoh berikut menunjukkan cara memanggil Delete metode untuk menandai baris pertama dalam Customers tabel sebagai dihapus:

northwindDataSet1.Customers.Rows[0].Delete();

Nota

Jika Anda mendapatkan properti hitungannya DataRowCollection, jumlah yang dihasilkan menyertakan rekaman yang sudah ditandai untuk dihapus. Untuk mendapatkan jumlah rekaman yang akurat yang tidak ditandai untuk penghapusan, Anda dapat mengulangi koleksi dan melihat RowState properti setiap rekaman. Rekaman yang ditandai untuk penghapusan memiliki RowState dari Deleted. Atau, Anda dapat membuat tampilan data himpunan data yang memfilter berdasarkan status baris dan mendapatkan properti hitungan darinya.

Menentukan apakah ada baris yang diubah

Saat Anda membuat perubahan pada rekaman dalam himpunan data, informasi tentang perubahan tersebut disimpan hingga Anda menerapkannya. Anda mempraktikkan perubahan saat Anda memanggil metode AcceptChanges dari suatu dataset atau tabel data, atau saat Anda memanggil metode Update dari TableAdapter atau adaptor data.

Perubahan dilacak dua cara di setiap baris data:

  • Setiap baris data berisi informasi yang terkait dengan RowState, misalnya Added, , Modified, Deletedatau Unchanged.

  • Setiap baris data yang diubah berisi beberapa versi. DataRowVersion menyertakan versi asli sebelum perubahan dan versi saat ini setelah perubahan. Saat ada perubahan yang tertunda dan Anda dapat merespons peristiwa RowChanging, versi ketiga yang diusulkan juga tersedia.

Untuk memeriksa baris yang diubah, panggil HasChanges metode himpunan data. Metode mengembalikan true jika perubahan dilakukan dalam himpunan data. Setelah menentukan bahwa perubahan ada, Anda dapat memanggil GetChanges metode DataSet atau DataTable untuk mengembalikan sekumpulan baris yang diubah.

Contoh berikut menunjukkan cara memeriksa nilai pengembalian dari HasChanges metode untuk mendeteksi apakah ada baris yang diubah di NorthwindDataset1.

if (northwindDataSet1.HasChanges()) 
{
    // Changed rows were detected, add appropriate code.
}
else
{
    // No changed rows were detected, add appropriate code.
}

Menentukan jenis perubahan

Anda dapat memeriksa untuk melihat jenis perubahan apa yang dilakukan dalam himpunan data dengan meneruskan nilai dari DataRowState enumerasi ke HasChanges metode .

Contoh berikut menunjukkan cara memeriksa himpunan NorthwindDataset1 data untuk menentukan apakah ada baris baru yang ditambahkan.

if (northwindDataSet1.HasChanges(DataRowState.Added)) 
{
    // New rows have been added to the dataset, add appropriate code.
}
else
{
    // No new rows have been added to the dataset, add appropriate code.
}

Menemukan baris yang memiliki kesalahan

Saat Anda bekerja dengan kolom dan baris data individual, Anda mungkin mengalami kesalahan. Anda dapat memeriksa HasErrors properti untuk menentukan apakah kesalahan ada di DataSet, , DataTableatau DataRow.

Jika properti himpunan data adalah HasErrors, lakukan proses iterasi melalui kumpulan tabel, lalu melalui baris, untuk menemukan baris dengan kesalahan.

private void FindErrors() 
{
    if (dataSet1.HasErrors)
    {
        foreach (DataTable table in dataSet1.Tables)
        {
            if (table.HasErrors)
            {
                foreach (DataRow row in table.Rows)
                {
                    if (row.HasErrors)
                    {
                        // Process error here.
                    }
                }
            }
        }
    }
}