Bagikan melalui


Menyimpan data ke database (beberapa tabel) di aplikasi .NET Framework

Catatan

Himpunan data 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. Himpunan data tersebut sangat berguna untuk aplikasi yang mengaktifkan pengguna guna memodifikasi data dan mempertahankan perubahan kembali ke database. Meskipun himpunan data telah terbukti menjadi teknologi yang sangat sukses, sebaiknya aplikasi .NET baru 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.

Salah satu skenario paling umum dalam pengembangan aplikasi adalah menampilkan data pada formulir dalam aplikasi Windows, mengedit data, dan mengirim data yang diperbarui kembali ke database. Panduan ini membuat formulir yang menampilkan data dari dua tabel terkait dan memperlihatkan cara mengedit rekaman dan menyimpan perubahan kembali ke database. Contoh ini menggunakan tabel Customers dan Orders dari database sampel Northwind.

Anda dapat menyimpan data dalam aplikasi Anda kembali ke database dengan memanggil metode Update TableAdapter. Saat Anda menyeret tabel dari jendela Sumber Data ke formulir, kode yang diperlukan untuk menyimpan data ditambahkan secara otomatis. Setiap tabel tambahan yang ditambahkan ke formulir memerlukan penambahan kode ini secara manual. Panduan ini menunjukkan cara menambahkan kode untuk menyimpan pembaruan dari lebih dari satu tabel.

Tugas yang diilustrasikan dalam panduan ini meliputi:

Prasyarat

Untuk menyelesaikan tutorial ini, Anda memerlukan beban kerja pengembangan desktop .NET dan Penyimpanan data dan pemrosesan yang diinstal di Visual Studio. Untuk menginstalnya, buka penginstal Visual Studio, lalu pilih Ubah(atau Lebih> Ubah) di samping versi Visual Studio yang ingin Anda ubah. Lihat Ubah Visual Studio.

Panduan ini menggunakan SQL Server Express LocalDB dan database sampel Northwind.

  1. Jika Anda tidak memiliki SQL Server Express LocalDB, pasang dari halaman unduhan SQL Server Express, atau melalui Alat Penginstal Visual Studio. Di Alat Penginstal Visual Studio, Anda dapat memasang SQL Server Express LocalDB sebagai bagian dari beban kerja Penyimpanan dan pemrosesan data, atau sebagai komponen individual.

  2. Instal database sampel Northwind dengan mengikuti langkah-langkah berikut:

    1. Di Visual Studio, buka jendela SQL Server Object Explorer. (SQL Server Object Explorer dipasang sebagai bagian dari beban kerja Penyimpanan dan pemrosesan data di Alat Penginstal Visual Studio.) Perluas node SQL Server. Klik kanan pada instans LocalDB Anda dan pilih Kueri Baru.

      Jendela editor kueri terbuka.

    2. Salin skrip Northwind Transact-SQL ke clipboard Anda. Skrip T-SQL ini membuat database Northwind dari awal dan mengisinya dengan data.

    3. Tempelkan skrip T-SQL ke editor kueri, lalu pilih tombol Jalankan.

      Setelah beberapa saat, kueri selesai berjalan dan database Northwind dibuat.

Membuat aplikasi Formulir Windows

Buat proyek Aplikasi Formulir Windows baru untuk C# atau Visual Basic. Beri nama proyek UpdateMultipleTablesWalkthrough.

Membuat sumber data

Langkah ini membuat sumber data dari database Northwind menggunakan Panduan Konfigurasi Sumber Data. Anda harus memiliki akses ke database sampel Northwind untuk membuat koneksi. Untuk informasi tentang menyiapkan database sampel Northwind, lihat Cara: Menginstal database sampel.

  1. Pada menu Data, pilih Perlihatkan Sumber Data.

    Jendela Sumber Data terbuka.

  2. Di jendela Sumber Data, pilih Tambahkan Sumber Data Baru untuk memulai Wizard Konfigurasi Sumber Data.

  3. Pada layar Pilih Jenis Sumber Data, pilih Database, lalu pilih Berikutnya.

  4. Pada layar Pilih Koneksi Data Anda, lakukan salah satu hal berikut ini:

    • Jika koneksi data ke database sampel Northwind tersedia di daftar dropdown, pilihlah.

      -atau-

    • Pilih Koneksi Baru untuk membuka kotak dialog Tambahkan/Ubah Koneksi.

  5. Jika database Anda memerlukan kata sandi, pilih opsi untuk menyertakan data sensitif, lalu pilih Berikutnya.

  6. Pada simpan string koneksi ke file Konfigurasi Aplikasi, pilih Berikutnya.

  7. Pada layar Pilih Objek Database Anda, perluas node Tabel.

  8. Pilih tabel Pelanggan dan Pesanan, lalu pilih Selesai.

    NorthwindDataSet ditambahkan ke proyek Anda, dan tabel muncul di jendela Sumber Data.

Atur kontrol yang akan dibuat

Untuk panduan ini, data dalam tabel Customers berada dalam tata letak Detail tempat data ditampilkan dalam kontrol individual. Data dari tabel Orders berada dalam tata letak Kisi yang ditampilkan dalam kontrol DataGridView.

Untuk mengatur jenis drop untuk item di jendela Sumber Data

  1. Di jendela Sumber Data, perluas simpul Pelanggan.

  2. Pada simpul Pelanggan, pilih Detail dari daftar kontrol untuk mengubah kontrol tabel Pelanggan menjadi kontrol individual. Untuk mendapatkan informasi selengkapnya, lihat Mengatur kontrol yang akan dibuat saat menarik dari jendela Sumber Data.

Membuat formulir terikat data

Anda dapat membuat kontrol terikat data dengan menyeret item dari jendela Sumber Data ke formulir Anda.

  1. Seret node Pelanggan utama dari jendela Sumber Data ke Form1.

    Kontrol terikat data dengan label deskriptif muncul pada formulir, bersama dengan strip alat (BindingNavigator) untuk menavigasi rekaman. NorthwindDataSet, CustomersTableAdapter, BindingSource, dan BindingNavigator muncul di baki komponen.

  2. Seret simpul Pesanan terkait dari jendela Sumber Data ke Form1.

    Catatan

    Simpul Pesanan terkait terletak di bawah kolom Faks dan merupakan simpul anak dari simpul Pelanggan.

    Kontrol DataGridView dan strip alat (BindingNavigator) untuk menavigasi rekaman muncul di formulir. OrdersTableAdapter dan BindingSource muncul di penampan komponen.

Menambahkan kode untuk memperbarui tampilan

Anda dapat memperbarui database dengan memanggil metodeUpdateTableAdapters Pelanggan dan Pesanan. Secara default, penanganan aktivitas untuk tombolSimpan dari BindingNavigator ditambahkan ke kode formulir untuk mengirim pembaruan ke database. Prosedur ini memodifikasi kode untuk mengirim pembaruan dalam urutan yang benar. Ini menghilangkan kemungkinan meningkatkan kesalahan integritas referensial. Kode ini juga menerapkan penanganan kesalahan dengan membungkus panggilan pembaruan dalam blok try-catch. Anda dapat memodifikasi kode agar sesuai dengan kebutuhan aplikasi Anda.

Catatan

Untuk kejelasan, panduan ini tidak menggunakan transaksi. Namun, jika Anda memperbarui dua atau beberapa tabel terkait, sertakan semua logika pembaruan dalam transaksi. Transaksi adalah proses yang memastikan bahwa semua perubahan terkait pada database berhasil sebelum perubahan apa pun dilakukan. Untuk mengetahui informasi selengkapnya, lihat Transaksi dan Konkurensi.

Untuk menambahkan logika pembaruan ke aplikasi

  1. Pilih tombol Simpan di BindingNavigator. Ini membuka Editor Kode ke penanganan aktivitas bindingNavigatorSaveItem_Click.

  2. Ganti kode di penanganan aktivitas untuk memanggil metode Update TableAdapters terkait. Kode berikut pertama kali membuat tiga tabel data sementara untuk menyimpan informasi yang diperbarui untuk masing-masing DataRowState (Deleted, Added, dan Modified). Pembaruan dijalankan dalam urutan yang benar. Kode akan terlihat seperti berikut:

    this.Validate();
    this.ordersBindingSource.EndEdit();
    this.customersBindingSource.EndEdit();
    
    NorthwindDataSet.OrdersDataTable deletedOrders = (NorthwindDataSet.OrdersDataTable)
        northwindDataSet.Orders.GetChanges(DataRowState.Deleted);
    
    NorthwindDataSet.OrdersDataTable newOrders = (NorthwindDataSet.OrdersDataTable)
        northwindDataSet.Orders.GetChanges(DataRowState.Added);
    
    NorthwindDataSet.OrdersDataTable modifiedOrders = (NorthwindDataSet.OrdersDataTable)
        northwindDataSet.Orders.GetChanges(DataRowState.Modified);
    
    try
    {
        // Remove all deleted orders from the Orders table.
        if (deletedOrders != null)
        {
            ordersTableAdapter.Update(deletedOrders);
        }
    
        // Update the Customers table.
        customersTableAdapter.Update(northwindDataSet.Customers);
    
        // Add new orders to the Orders table.
        if (newOrders != null)
        {
            ordersTableAdapter.Update(newOrders);
        }
    
        // Update all modified Orders.
        if (modifiedOrders != null)
        {
            ordersTableAdapter.Update(modifiedOrders);
        }
    
        northwindDataSet.AcceptChanges();
    }
    
    catch (System.Exception ex)
    {
        MessageBox.Show("Update failed");
    }
    
    finally
    {
        if (deletedOrders != null)
        {
            deletedOrders.Dispose();
        }
        if (newOrders != null)
        {
            newOrders.Dispose();
        }
        if (modifiedOrders != null)
        {
            modifiedOrders.Dispose();
        }
    }
    

Uji aplikasi

  1. Tekan F5.

  2. Buat beberapa perubahan pada data dari satu atau beberapa rekaman di setiap tabel.

  3. Pilih tombol Simpan.

  4. Periksa nilai dalam database untuk memverifikasi bahwa perubahan disimpan.