Bagikan melalui


Membuat aplikasi data dasar dengan menggunakan ADO.NET

Note

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.

Saat Anda membuat aplikasi yang memanipulasi data dalam database, Anda biasanya melakukan tugas seperti menentukan string koneksi, menyisipkan data, dan menjalankan prosedur tersimpan. Saat mengikuti artikel ini, Anda dapat menemukan cara berinteraksi dengan database dalam aplikasi form over data Windows Forms menggunakan Visual C# atau Visual Basic dan ADO.NET. Semua teknologi data .NET, termasuk himpunan data, LINQ (Language-Integrated Query) ke SQL, dan Entity Framework, pada akhirnya melakukan langkah-langkah yang mirip dengan langkah-langkah yang ditunjukkan dalam artikel ini.

Artikel ini menunjukkan cara cepat mengeluarkan data dari database. Jika aplikasi Anda perlu memodifikasi data dengan cara nontrivial dan memperbarui database, pertimbangkan untuk menggunakan Kerangka Kerja Entitas dan pengikatan data. Melakukannya memungkinkan kontrol antarmuka pengguna Anda disinkronkan secara otomatis ke perubahan dalam data yang mendasar.

Untuk mengakses kode lengkap untuk tutorial ini, lihat repositori GitHub dokumen Visual Studio untuk C# dan Visual Basic.

Important

Agar kode tetap sederhana, tidak menyertakan penanganan pengecualian yang siap digunakan dalam produksi.

Prerequisites

  • Visual Studio dengan pengembangan desktop .NET dan penyimpanan dan pemrosesan data beban kerja terinstal. Untuk menginstalnya, buka Penginstal Visual Studio dan pilih Ubah di samping versi Visual Studio yang ingin Anda ubah.

  • SQL Server Express LocalDB. Jika Anda tidak memiliki SQL Server Express LocalDB, Anda dapat menginstalnya dari halaman unduhan SQL Server.

Artikel ini mengasumsikan bahwa Anda terbiasa dengan fungsionalitas dasar Visual Studio IDE. Ini juga mengasumsikan bahwa Anda dapat membuat aplikasi Windows Forms, menambahkan formulir ke proyek, menambahkan tombol dan kontrol lain ke formulir, mengatur properti kontrol, dan mengodekan peristiwa sederhana. Jika Anda tidak nyaman dengan tugas-tugas ini, selesaikan tutorial Buat aplikasi Windows Forms di Visual Studio dengan C# atau buat aplikasi Windows Forms di Visual Studio dengan Visual Basic sebelum Anda memulai panduan ini.

Menyiapkan database sampel

Buat database sampel dengan mengikuti langkah-langkah berikut:

  1. Di Visual Studio, buka jendela Server Explorer.

  2. Klik kanan Koneksi Data dan pilih Buat Database SQL Server Baru.

  3. Untuk Nama server, masukkan (localdb)\mssqllocaldb.

  4. Untuk Nama database baru, masukkan Penjualan, lalu pilih OK.

    Visual Studio membuat database Penjualan kosong di bawah simpul Koneksi Data di Server Explorer.

  5. Klik kanan koneksi data Penjualan dan pilih Kueri Baru.

    Jendela editor kueri terbuka.

  6. Salin skrip Transact-SQL Penjualan ke clipboard Anda.

  7. Tempelkan skrip T-SQL ke jendela editor kueri, lalu pilih Jalankan.

    Setelah beberapa saat, kueri selesai berjalan dan objek database dibuat. Database berisi dua tabel: Pelanggan dan Pesanan. Tabel ini tidak berisi data pada awalnya, tetapi Anda dapat menambahkan data saat menjalankan aplikasi yang Anda buat. Database juga berisi lima prosedur tersimpan dasar.

Membuat formulir dan menambahkan kontrol

  1. Buat proyek C# atau Visual Basic dengan templat Windows Forms App (.NET Framework) dan beri nama SimpleDataApp.

    Visual Studio membuat proyek dan beberapa file, termasuk formulir Windows kosong bernama Form1.

  2. Di Penjelajah Solusi, tambahkan dua formulir Windows ke proyek Anda sehingga memiliki total tiga formulir, dan beri nama berikut:

    • Navigation

    • NewCustomer

    • FillOrCancel

  3. Untuk setiap formulir, tambahkan kotak teks, tombol, dan kontrol lain yang diperlihatkan dalam ilustrasi berikut. Untuk setiap kontrol, atur properti yang dijelaskan tabel.

    Note

    Kotak grup dan kontrol label menambahkan kejelasan, tetapi tidak digunakan dalam kode.

    formulir Navigasi

    Cuplikan layar yang memperlihatkan detail formulir Navigasi.

    Kontrol untuk formulir Navigasi

    Mengontrol teks Jenis kontrol Properti kontrol
    Tambahkan akun Button Nama = btnGoToAdd
    Mengisi atau membatalkan pesanan Button Nama = btnGoToFillOrCancel
    Exit Button Nama = btnExit

    formulir NewCustomer

    Cuplikan layar yang memperlihatkan detail formulir NewCustomer.

    Kontrol untuk formulir NewCustomer

    Teks Antarmuka/Kendali Jenis kontrol Properti kontrol
    Nama pelanggan TextBox Nama = txtCustomerName
    ID Pelanggan TextBox Nama = txtCustomerID
    ReadOnly = HanyaBaca
    Buat akun Button Nama = btnCreateAccount
    Jumlah pesanan NumericUpdown Nama = numOrderAmount
    DecimalPlaces = 0
    Maksimum = 5000
    Tanggal pesanan DateTimePicker Nama = dtpOrderDate
    Format = Pendek
    Tempatkan pesanan Button Nama = btnPlaceOrder
    Finish Button Nama = btnAddFinish
    Menambahkan akun lain Button Nama = btnAddAnotherAccount

    formulir FillOrCancel

    Cuplikan layar yang memperlihatkan detail formulir FillOrCancel.

    Kontrol untuk formulir FillOrCancel

    Teks Antarmuka/Kendali Jenis kontrol Properti kontrol
    ID Pesanan TextBox Nama = txtOrderID
    Temukan pesanan Button Nama = btnFindByOrderID
    Jika mengisi pesanan... DateTimePicker Nama = dtpFillDate
    Format = Pendek
    (None) DataGridView Nama = dgvCustomerOrders
    ReadOnly = HanyaBaca
    RowHeadersVisible = False
    Batalkan pesanan Button Nama = btnCancelOrder
    Pemenuhan pesanan Button Nama = btnFillOrder
    Finish Button Nama = btnFinishUpdates

Menyimpan string koneksi

Saat aplikasi Anda mencoba membuka koneksi ke database, aplikasi Anda harus memiliki akses ke string koneksi. Untuk menghindari kebutuhan untuk memasukkan string secara manual pada setiap formulir, simpan string dalam file App.config di proyek Anda. Kemudian, buat metode yang mengembalikan string saat metode dipanggil dari formulir apa pun di aplikasi Anda.

Untuk menemukan string koneksi:

  1. Di Server Explorer, klik kanan koneksi data Penjualan , lalu pilih Properti.

  2. Temukan properti String Koneksi dan salin nilai stringnya ke clipboard.

Untuk menyimpan string koneksi di proyek Anda:

  1. Di Penjelajah Solusi, lakukan salah satu langkah berikut, bergantung pada jenis proyek Anda:

    • Untuk proyek C#, perluas simpul Properti di bawah proyek, lalu buka file Settings.settings .

    • Untuk proyek Visual Basic, pilih Perlihatkan Semua File, perluas simpul Proyek Saya , lalu buka file Pengaturan.pengaturan .

  2. Di kolom Nama , masukkan connString.

  3. Di daftar Jenis , pilih (String koneksi).

  4. Dalam daftar Cakupan, pilih Aplikasi.

  5. Di kolom Nilai, masukkan string koneksi Anda (tanpa tanda kutip luar), lalu simpan perubahan Anda.

    Cuplikan layar yang memperlihatkan data String Koneksi di Settings.settings.

Caution

Dalam aplikasi nyata, Anda harus menyimpan string koneksi dengan aman, seperti yang dijelaskan dalam string koneksi dan file konfigurasi. Untuk keamanan terbaik, gunakan metode autentikasi yang tidak mengandalkan penyimpanan kata sandi dalam string koneksi. Misalnya, Autentikasi Windows untuk database SQL Server lokal. Untuk informasi selengkapnya, lihat Menyimpan dan mengedit string koneksi.

Tulis kode untuk formulir

Bagian ini berisi gambaran umum singkat tentang apa yang dilakukan setiap formulir. Ini juga menyediakan kode yang menentukan logika yang mendasar saat Anda memilih tombol pada formulir.

Formulir Navigasi terbuka saat Anda menjalankan aplikasi dan menyertakan tombol berikut:

  • Menambahkan akun: Membuka formulir NewCustomer .

  • Mengisi atau membatalkan pesanan: Membuka formulir FillOrCancel .

  • Keluar: Menutup aplikasi.

Tetapkan formulir Navigasi sebagai formulir startup

Untuk proyek C#:

  1. Di Penjelajah Solusi, buka Program.cs.

  2. Ubah baris menjadi Application.Run : Application.Run(new Navigation());

Untuk proyek Visual Basic:

  1. Di Penjelajah Solusi, klik kanan proyek dan pilih Properti.

  2. Di Perancang Proyek, pilih tab Aplikasi , lalu pilih Navigasi di daftar objek Startup .

Membuat penanganan aktivitas yang dibuat secara otomatis untuk formulir Navigasi

Untuk membuat metode penanganan aktivitas kosong, klik dua kali masing-masing dari tiga tombol pada formulir Navigasi. Mengklik dua kali tombol menambahkan kode yang dibuat secara otomatis dalam file kode Perancang, yang memungkinkan pilihan tombol untuk menaikkan peristiwa.

Jika Anda memutuskan untuk menyalin dan menempelkan kode langsung ke file kode Anda alih-alih menggunakan tindakan klik dua kali di perancang, pastikan Anda mengatur penanganan aktivitas ke metode yang tepat:

  1. Di jendela Properti file kode untuk formulir, beralihlah ke tab Peristiwa dengan menggunakan tombol toolbar petir.

  2. Cari properti Klik dan verifikasi nilainya adalah metode penanganan aktivitas yang benar.

Menambahkan kode untuk logika formulir Navigasi

Di halaman kode untuk formulir Navigasi, lengkapi isi metode untuk tiga penanganan aktivitas pemilihan tombol seperti yang ditunjukkan dalam kode berikut.

/// <summary>
/// Opens the NewCustomer form as a dialog box,
/// which returns focus to the calling form when it is closed. 
/// </summary>
private void btnGoToAdd_Click(object sender, EventArgs e)
{
    Form frm = new NewCustomer();
    frm.Show();
}

/// <summary>
/// Opens the FillorCancel form as a dialog box. 
/// </summary>
private void btnGoToFillOrCancel_Click(object sender, EventArgs e)
{
    Form frm = new FillOrCancel();
    frm.ShowDialog();
}

/// <summary>
/// Closes the application (not just the Navigation form).
/// </summary>
private void btnExit_Click(object sender, EventArgs e)
{
    this.Close();
}

Formulir Pelanggan Baru

Saat Anda memasukkan nama pelanggan lalu memilih tombol Buat akun , formulir NewCustomer membuat akun pelanggan, dan SQL Server mengembalikan nilai IDENTITY sebagai ID pelanggan baru. Anda kemudian dapat melakukan pemesanan untuk akun baru dengan menentukan jumlah dan tanggal pesanan, dan memilih tombol Tempatkan pesanan .

Membuat penanganan aktivitas yang dibuat secara otomatis untuk formulir NewCustomer

Buat penanganan aktivitas Klik kosong untuk setiap tombol pada formulir NewCustomer dengan mengklik dua kali masing-masing dari empat tombol. Mengklik dua kali tombol juga menambahkan kode yang dibuat secara otomatis dalam file kode Perancang yang memungkinkan tombol pilih untuk menaikkan peristiwa.

Menambahkan kode untuk logika formulir NewCustomer

Untuk menyelesaikan logika formulir NewCustomer, ikuti langkah-langkah berikut:

  1. System.Data.SqlClient Bawa namespace ke dalam cakupan sehingga Anda tidak perlu sepenuhnya memenuhi syarat nama anggotanya.

    using System.Data.SqlClient;
    

  1. Tambahkan beberapa variabel dan metode pembantu ke kelas .

    // Storage for IDENTITY values returned from database.
    private int parsedCustomerID;
    private int orderID;
    
    /// <summary>
    /// Verifies that the customer name text box is not empty.
    /// </summary>
    private bool IsCustomerNameValid()
    {
        if (txtCustomerName.Text == "")
        {
            MessageBox.Show("Please enter a name.");
            return false;
        }
        else
        {
            return true;
        }
    }
    
    /// <summary>
    /// Verifies that a customer ID and order amount have been provided.
    /// </summary>
    private bool IsOrderDataValid()
    {
        // Verify that CustomerID is present.
        if (txtCustomerID.Text == "")
        {
            MessageBox.Show("Please create customer account before placing order.");
            return false;
        }
        // Verify that Amount isn't 0.
        else if ((numOrderAmount.Value < 1))
        {
            MessageBox.Show("Please specify an order amount.");
            return false;
        }
        else
        {
            // Order can be submitted.
            return true;
        }
    }
    
    /// <summary>
    /// Clears the form data.
    /// </summary>
    private void ClearForm()
    {
        txtCustomerName.Clear();
        txtCustomerID.Clear();
        dtpOrderDate.Value = DateTime.Now;
        numOrderAmount.Value = 0;
        this.parsedCustomerID = 0;
    }
    

  1. Lengkapi isi metode untuk penanganan aktivitas yang dipilih tombol empat.

    /// <summary>
    /// Creates a new customer by calling the Sales.uspNewCustomer stored procedure.
    /// </summary>
    private void btnCreateAccount_Click(object sender, EventArgs e)
    {
        if (IsCustomerNameValid())
        {
            // Create the connection.
            using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString))
            {
                // Create a SqlCommand, and identify it as a stored procedure.
                using (SqlCommand sqlCommand = new SqlCommand("Sales.uspNewCustomer", connection))
                {
                    sqlCommand.CommandType = CommandType.StoredProcedure;
    
                    // Add input parameter for the stored procedure and specify what to use as its value.
                    sqlCommand.Parameters.Add(new SqlParameter("@CustomerName", SqlDbType.NVarChar, 40));
                    sqlCommand.Parameters["@CustomerName"].Value = txtCustomerName.Text;
    
                    // Add the output parameter.
                    sqlCommand.Parameters.Add(new SqlParameter("@CustomerID", SqlDbType.Int));
                    sqlCommand.Parameters["@CustomerID"].Direction = ParameterDirection.Output;
    
                    try
                    {
                        connection.Open();
    
                        // Run the stored procedure.
                        sqlCommand.ExecuteNonQuery();
    
                        // Customer ID is an IDENTITY value from the database.
                        this.parsedCustomerID = (int)sqlCommand.Parameters["@CustomerID"].Value;
    
                        // Put the Customer ID value into the read-only text box.
                        this.txtCustomerID.Text = Convert.ToString(parsedCustomerID);
                    }
                    catch
                    {
                        MessageBox.Show("Customer ID was not returned. Account could not be created.");
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
        }
    }
    
    /// <summary>
    /// Calls the Sales.uspPlaceNewOrder stored procedure to place an order.
    /// </summary>
    private void btnPlaceOrder_Click(object sender, EventArgs e)
    {
        // Ensure the required input is present.
        if (IsOrderDataValid())
        {
            // Create the connection.
            using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString))
            {
                // Create SqlCommand and identify it as a stored procedure.
                using (SqlCommand sqlCommand = new SqlCommand("Sales.uspPlaceNewOrder", connection))
                {
                    sqlCommand.CommandType = CommandType.StoredProcedure;
    
                    // Add the @CustomerID input parameter, which was obtained from uspNewCustomer.
                    sqlCommand.Parameters.Add(new SqlParameter("@CustomerID", SqlDbType.Int));
                    sqlCommand.Parameters["@CustomerID"].Value = this.parsedCustomerID;
    
                    // Add the @OrderDate input parameter.
                    sqlCommand.Parameters.Add(new SqlParameter("@OrderDate", SqlDbType.DateTime, 8));
                    sqlCommand.Parameters["@OrderDate"].Value = dtpOrderDate.Value;
    
                    // Add the @Amount order amount input parameter.
                    sqlCommand.Parameters.Add(new SqlParameter("@Amount", SqlDbType.Int));
                    sqlCommand.Parameters["@Amount"].Value = numOrderAmount.Value;
    
                    // Add the @Status order status input parameter.
                    // For a new order, the status is always O (open).
                    sqlCommand.Parameters.Add(new SqlParameter("@Status", SqlDbType.Char, 1));
                    sqlCommand.Parameters["@Status"].Value = "O";
    
                    // Add the return value for the stored procedure, which is  the order ID.
                    sqlCommand.Parameters.Add(new SqlParameter("@RC", SqlDbType.Int));
                    sqlCommand.Parameters["@RC"].Direction = ParameterDirection.ReturnValue;
    
                    try
                    {
                        //Open connection.
                        connection.Open();
    
                        // Run the stored procedure.
                        sqlCommand.ExecuteNonQuery();
    
                        // Display the order number.
                        this.orderID = (int)sqlCommand.Parameters["@RC"].Value;
                        MessageBox.Show("Order number " + this.orderID + " has been submitted.");
                    }
                    catch
                    {
                        MessageBox.Show("Order could not be placed.");
                    }
                    finally
                    {
                        connection.Close();
                    }
                }
            }
        }
    }
    
    /// <summary>
    /// Clears the form data so another new account can be created.
    /// </summary>
    private void btnAddAnotherAccount_Click(object sender, EventArgs e)
    {
        this.ClearForm();
    }
    
    /// <summary>
    /// Closes the form/dialog box.
    /// </summary>
    private void btnAddFinish_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    

Formulir IsiAtauBatalkan

Formulir FillOrCancel menjalankan kueri untuk mengembalikan pesanan saat Anda memasukkan ID pesanan, lalu pilih tombol Temukan pesanan . Baris yang dikembalikan muncul dalam kisi data baca-saja. Anda dapat menandai pesanan sebagai dibatalkan (X) jika Anda memilih tombol Batalkan pesanan , atau Anda dapat menandai pesanan sebagai terisi (F) jika Anda memilih tombol Isi pesanan . Jika Anda memilih tombol Temukan pesanan lagi, baris yang diperbarui akan muncul.

Membuat penanganan aktivitas yang dibuat secara otomatis untuk formulir FillOrCancel

Buat penanganan aktivitas Klik kosong untuk empat tombol pada formulir FillOrCancel dengan mengklik dua kali tombol. Mengklik dua kali tombol juga menambahkan kode yang dibuat secara otomatis dalam file kode Perancang yang memungkinkan tombol pilih untuk menaikkan peristiwa.

Menambahkan kode untuk logika formulir FillOrCancel

Untuk menyelesaikan logika formulir FillOrCancel, ikuti langkah-langkah berikut.

  1. Masukkan dua namespace berikut ke dalam ruang lingkup sehingga Anda tidak perlu menyebutkan nama lengkap anggota mereka.

    using System.Data.SqlClient;
    using System.Text.RegularExpressions;
    

  1. Tambahkan variabel dan metode pembantu ke kelas .

    // Storage for the order ID value.
    private int parsedOrderID;
    
    /// <summary>
    /// Verifies that an order ID is present and contains valid characters.
    /// </summary>
    private bool IsOrderIDValid()
    {
        // Check for input in the Order ID text box.
        if (txtOrderID.Text == "")
        {
            MessageBox.Show("Please specify the Order ID.");
            return false;
        }
    
        // Check for characters other than integers.
        else if (Regex.IsMatch(txtOrderID.Text, @"^\D*$"))
        {
            // Show message and clear input.
            MessageBox.Show("Customer ID must contain only numbers.");
            txtOrderID.Clear();
            return false;
        }
        else
        {
            // Convert the text in the text box to an integer to send to the database.
            parsedOrderID = Int32.Parse(txtOrderID.Text);
            return true;
        }
    }
    

  1. Lengkapi isi metode untuk penanganan aktivitas yang dipilih tombol empat.

    /// <summary>
    /// Executes a t-SQL SELECT statement to obtain order data for a specified
    /// order ID, then displays it in the DataGridView on the form.
    /// </summary>
    private void btnFindByOrderID_Click(object sender, EventArgs e)
    {
        if (IsOrderIDValid())
        {
            using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString))
            {
                // Define a t-SQL query string that has a parameter for orderID.
                const string sql = "SELECT * FROM Sales.Orders WHERE orderID = @orderID";
    
                // Create a SqlCommand object.
                using (SqlCommand sqlCommand = new SqlCommand(sql, connection))
                {
                    // Define the @orderID parameter and set its value.
                    sqlCommand.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int));
                    sqlCommand.Parameters["@orderID"].Value = parsedOrderID;
    
                    try
                    {
                        connection.Open();
    
                        // Run the query by calling ExecuteReader().
                        using (SqlDataReader dataReader = sqlCommand.ExecuteReader())
                        {
                            // Create a data table to hold the retrieved data.
                            DataTable dataTable = new DataTable();
    
                            // Load the data from SqlDataReader into the data table.
                            dataTable.Load(dataReader);
    
                            // Display the data from the data table in the data grid view.
                            this.dgvCustomerOrders.DataSource = dataTable;
    
                            // Close the SqlDataReader.
                            dataReader.Close();
                        }
                    }
                    catch
                    {
                        MessageBox.Show("The requested order could not be loaded into the form.");
                    }
                    finally
                    {
                        // Close the connection.
                        connection.Close();
                    }
                }
            }
        }
    }
    
    /// <summary>
    /// Cancels an order by calling the Sales.uspCancelOrder
    /// stored procedure on the database.
    /// </summary>
    private void btnCancelOrder_Click(object sender, EventArgs e)
    {
        if (IsOrderIDValid())
        {
            // Create the connection.
            using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString))
            {
                // Create the SqlCommand object and identify it as a stored procedure.
                using (SqlCommand sqlCommand = new SqlCommand("Sales.uspCancelOrder", connection))
                {
                    sqlCommand.CommandType = CommandType.StoredProcedure;
    
                    // Add the order ID input parameter for the stored procedure.
                    sqlCommand.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int));
                    sqlCommand.Parameters["@orderID"].Value = parsedOrderID;
    
                    try
                    {
                        // Open the connection.
                        connection.Open();
    
                        // Run the command to execute the stored procedure.
                        sqlCommand.ExecuteNonQuery();
                    }
                    catch
                    {
                        MessageBox.Show("The cancel operation was not completed.");
                    }
                    finally
                    {
                        // Close connection.
                        connection.Close();
                    }
                }
            }
        }
    }
    
    /// <summary>
    /// Fills an order by calling the Sales.uspFillOrder stored
    /// procedure on the database.
    /// </summary>
    private void btnFillOrder_Click(object sender, EventArgs e)
    {
        if (IsOrderIDValid())
        {
            // Create the connection.
            using (SqlConnection connection = new SqlConnection(Properties.Settings.Default.connString))
            {
                // Create command and identify it as a stored procedure.
                using (SqlCommand sqlCommand = new SqlCommand("Sales.uspFillOrder", connection))
                {
                    sqlCommand.CommandType = CommandType.StoredProcedure;
    
                    // Add the order ID input parameter for the stored procedure.
                    sqlCommand.Parameters.Add(new SqlParameter("@orderID", SqlDbType.Int));
                    sqlCommand.Parameters["@orderID"].Value = parsedOrderID;
    
                    // Add the filled date input parameter for the stored procedure.
                    sqlCommand.Parameters.Add(new SqlParameter("@FilledDate", SqlDbType.DateTime, 8));
                    sqlCommand.Parameters["@FilledDate"].Value = dtpFillDate.Value;
    
                    try
                    {
                        connection.Open();
    
                        // Execute the stored procedure.
                        sqlCommand.ExecuteNonQuery();
                    }
                    catch
                    {
                        MessageBox.Show("The fill operation was not completed.");
                    }
                    finally
                    {
                        // Close the connection.
                        connection.Close();
                    }
                }
            }
        }
    }
    
    /// <summary>
    /// Closes the form.
    /// </summary>
    private void btnFinishUpdates_Click(object sender, EventArgs e)
    {
        this.Close();
    }
    

Menguji aplikasi Anda

Jalankan aplikasi dan coba buat beberapa pelanggan dan pesanan untuk memverifikasi bahwa semuanya berfungsi seperti yang diharapkan.

Untuk memverifikasi bahwa database diperbarui dengan perubahan Anda:

  1. Buka simpul Tabel di Server Explorer.

  2. Klik kanan simpul Pelanggan dan Pesanan , dan pilih Perlihatkan Data Tabel.