Bagikan melalui


Simpan data kembali ke database 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.

Himpunan data adalah salinan data dalam memori. Jika Anda memodifikasi data tersebut, adalah praktik yang baik untuk menyimpan perubahan tersebut kembali ke database. Anda melakukan ini dengan salah satu dari tiga cara:

  • Dengan memanggil salah Update satu metode TableAdapter

  • Dengan memanggil salah DBDirect satu metode TableAdapter

  • Dengan memanggil UpdateAll metode pada TableAdapterManager yang dihasilkan Visual Studio untuk Anda saat himpunan data berisi tabel yang terkait dengan tabel lain dalam himpunan data

Saat Anda mengikat data tabel himpunan data untuk mengontrol pada halaman Formulir Windows atau XAML, arsitektur pengikatan data melakukan semua pekerjaan untuk Anda.

Jika Anda terbiasa dengan TableAdapters, Anda dapat melompat langsung ke salah satu topik berikut:

Topik Deskripsi
Menyisipkan rekaman baru ke dalam database Cara melakukan pembaruan dan penyisipan menggunakan objek TableAdapters atau Command
Memperbarui data dengan menggunakan TableAdapter Cara melakukan pembaruan dengan TableAdapters
Pembaruan hierarkis Cara melakukan pembaruan dari himpunan data dengan dua atau beberapa tabel terkait
Menangani pengecualian konkurensi Cara menangani pengecualian ketika dua pengguna mencoba mengubah data yang sama dalam database secara bersamaan
Cara: Menyimpan data dengan menggunakan transaksi Cara menyimpan data dalam transaksi menggunakan Sistem. Namespace transaksi dan objek TransactionScope
Menyimpan data dalam transaksi Panduan yang membuat aplikasi Formulir Windows untuk menunjukkan penyimpanan data ke database di dalam transaksi
Menyimpan data ke database (beberapa tabel) Cara mengedit rekaman dan menyimpan perubahan dalam beberapa tabel kembali ke database
Menyimpan data dari objek ke database Cara meneruskan data dari objek yang tidak ada dalam himpunan data ke database dengan menggunakan metode TableAdapter DbDirect
Menyimpan data dengan metode TableAdapter DBDirect Cara menggunakan TableAdapter untuk mengirim kueri SQL langsung ke database
Menyimpan himpunan data sebagai XML Cara menyimpan himpunan data ke dokumen XML

Pembaruan dua tahap

Memperbarui sumber data adalah proses dua langkah. Langkah pertama adalah memperbarui himpunan data dengan rekaman baru, rekaman yang diubah, atau rekaman yang dihapus. Jika aplikasi Anda tidak pernah mengirim perubahan tersebut kembali ke sumber data, maka Anda selesai dengan pembaruan.

Jika Anda mengirim kembali perubahan ke database, langkah kedua diperlukan. Jika Anda tidak menggunakan kontrol terikat data, Anda harus memanggil Update metode TableAdapter (atau adaptor data) yang sama dengan yang Anda gunakan untuk mengisi himpunan data secara manual. Namun, Anda juga dapat menggunakan adaptor yang berbeda, misalnya, untuk memindahkan data dari satu sumber data ke sumber data lain atau untuk memperbarui beberapa sumber data. Jika Anda tidak menggunakan pengikatan data, dan menyimpan perubahan untuk tabel terkait, Anda harus membuat instans variabel kelas yang dibuat TableAdapterManager secara otomatis secara manual, lalu memanggil metodenya UpdateAll .

Diagram konseptual pembaruan himpunan data

Himpunan data berisi kumpulan tabel, yang berisi kumpulan baris. Jika Anda ingin memperbarui sumber data yang mendasar nanti, Anda harus menggunakan metode pada DataTable.DataRowCollection properti saat menambahkan atau menghapus baris. Metode tersebut melakukan pelacakan perubahan yang diperlukan untuk memperbarui sumber data. Jika Anda memanggil RemoveAt koleksi pada properti Baris, penghapusan tidak akan dikomunikasikan kembali ke database.

Menggabungkan himpunan data

Anda dapat memperbarui konten himpunan data dengan menggabungkannya dengan himpunan data lain. Ini melibatkan penyalinan konten himpunan data sumber ke dalam himpunan data panggilan (disebut sebagai himpunan data target ). Saat Anda menggabungkan himpunan data, rekaman baru dalam himpunan data sumber ditambahkan ke himpunan data target. Selain itu, kolom tambahan dalam himpunan data sumber ditambahkan ke himpunan data target. Menggabungkan himpunan data berguna saat Anda memiliki himpunan data lokal dan Anda mendapatkan himpunan data kedua dari aplikasi lain. Ini juga berguna ketika Anda mendapatkan himpunan data kedua dari komponen seperti layanan web XML, atau ketika Anda perlu mengintegrasikan data dari beberapa himpunan data.

Saat menggabungkan himpunan data, Anda dapat meneruskan argumen Boolean (preserveChanges) yang memberi tahu Merge metode apakah akan mempertahankan modifikasi yang ada dalam himpunan data target. Karena himpunan data mempertahankan beberapa versi rekaman, penting untuk diingat bahwa lebih dari satu versi rekaman sedang digabungkan. Tabel berikut ini memperlihatkan bagaimana rekaman dalam dua himpunan data digabungkan:

DataRowVersion Himpunan data target Himpunan data sumber
Asli James Wilson James C. Wilson
Saat ini Jim Wilson James C. Wilson

Memanggil Merge metode pada tabel sebelumnya dengan preserveChanges=false targetDataset.Merge(sourceDataset) menghasilkan data berikut:

DataRowVersion Himpunan data target Himpunan data sumber
Asli James C. Wilson James C. Wilson
Saat ini James C. Wilson James C. Wilson

Memanggil Merge metode dengan preserveChanges = true targetDataset.Merge(sourceDataset, true) menghasilkan data berikut:

DataRowVersion Himpunan data target Himpunan data sumber
Asli James C. Wilson James C. Wilson
Saat ini Jim Wilson James C. Wilson

Perhatian

preserveChanges = true Dalam skenario, jika RejectChanges metode dipanggil pada rekaman dalam himpunan data target, maka metode tersebut kembali ke data asli dari himpunan data sumber. Ini berarti bahwa jika Anda mencoba memperbarui sumber data asli dengan himpunan data target, mungkin tidak dapat menemukan baris asli untuk diperbarui. Anda dapat mencegah pelanggaran konkurensi dengan mengisi himpunan data lain dengan rekaman yang diperbarui dari sumber data lalu melakukan penggabungan untuk mencegah pelanggaran konkurensi. (Pelanggaran konkurensi terjadi ketika pengguna lain memodifikasi rekaman di sumber data setelah himpunan data diisi.)

Memperbarui batasan

Untuk membuat perubahan pada baris data yang sudah ada, tambahkan, atau perbarui data di kolom individual. Jika himpunan data berisi batasan (seperti kunci asing atau batasan yang tidak dapat diubah ke null), ada kemungkinan bahwa rekaman dapat sementara berada dalam status kesalahan saat Anda memperbaruinya. Artinya, itu bisa dalam status kesalahan setelah Anda selesai memperbarui satu kolom tetapi sebelum Anda sampai ke kolom berikutnya.

Untuk mencegah pelanggaran batasan dini, Anda dapat menangguhkan sementara batasan pembaruan. Ini melayani dua tujuan:

  • Ini mencegah kesalahan dilemparkan setelah Anda selesai memperbarui satu kolom tetapi belum mulai memperbarui kolom lain.

  • Ini mencegah peristiwa pembaruan tertentu dinaikkan (peristiwa yang sering digunakan untuk validasi).

Catatan

Dalam Formulir Windows, arsitektur pengikatan data yang disertakan dalam datagrid menangguhkan pemeriksaan batasan hingga fokus bergerak keluar dari baris, dan Anda tidak perlu secara eksplisit memanggil BeginEditmetode , , EndEditatau CancelEdit .

Batasan secara otomatis dinonaktifkan saat Merge metode dipanggil pada himpunan data. Ketika penggabungan selesai, jika ada batasan pada himpunan data yang tidak dapat diaktifkan, akan ConstraintException dilemparkan. Dalam situasi ini, EnforceConstraints properti diatur ke false, dan semua pelanggaran batasan harus diselesaikan sebelum mengatur EnforceConstraints ulang properti ke true.

Setelah menyelesaikan pembaruan, Anda dapat mengaktifkan kembali pemeriksaan batasan, yang juga dapat mengaktifkan kembali peristiwa pembaruan dan menaikkannya.

Untuk informasi selengkapnya tentang menangguhkan peristiwa, lihat Menonaktifkan batasan saat mengisi himpunan data.

Kesalahan pembaruan himpunan data

Saat Anda memperbarui rekaman dalam himpunan data, ada kemungkinan kesalahan. Misalnya, Anda mungkin secara tidak sengaja menulis data dari jenis yang salah ke kolom, atau data yang terlalu panjang, atau data yang memiliki beberapa masalah integritas lainnya. Atau, Anda mungkin memiliki pemeriksaan validasi khusus aplikasi yang dapat menimbulkan kesalahan kustom selama tahap peristiwa pembaruan apa pun. Untuk informasi selengkapnya, lihat Memvalidasi data dalam himpunan data.

Mempertahankan informasi tentang perubahan

Informasi tentang perubahan dalam himpunan data dipertahankan dengan dua cara: dengan menandai baris yang menunjukkan bahwa mereka telah berubah (RowState), dan dengan menyimpan beberapa salinan rekaman (DataRowVersion). Dengan menggunakan informasi ini, proses dapat menentukan apa yang telah berubah dalam himpunan data dan dapat mengirim pembaruan yang sesuai ke sumber data.

Properti RowState

Properti RowStateDataRow objek adalah nilai yang menyediakan informasi tentang status baris data tertentu.

Tabel berikut merinci nilai enumerasi yang DataRowState mungkin:

Nilai DataRowState Deskripsi
Added Baris telah ditambahkan sebagai item ke DataRowCollection. (Baris dalam status ini tidak memiliki versi asli yang sesuai karena tidak ada ketika metode terakhir AcceptChanges dipanggil).
Deleted Baris dihapus menggunakan DeleteDataRow objek.
Detached Baris telah dibuat tetapi bukan bagian dari .DataRowCollection Objek DataRow berada dalam status ini segera setelah dibuat, sebelum ditambahkan ke koleksi, dan setelah dihapus dari koleksi.
Modified Nilai kolom dalam baris telah berubah dalam beberapa cara.
Unchanged Baris belum berubah sejak AcceptChanges terakhir dipanggil.

Enumerasi DataRowVersion

Himpunan data mempertahankan beberapa versi rekaman. Bidang DataRowVersion digunakan saat mengambil nilai yang DataRow ditemukan dalam menggunakan Item[] properti atau GetChildRows metode DataRow objek.

Tabel berikut merinci nilai enumerasi yang DataRowVersion mungkin:

Nilai DataRowVersion Deskripsi
Current Versi rekaman saat ini berisi semua modifikasi yang telah dilakukan pada rekaman sejak terakhir kali AcceptChanges dipanggil. Jika baris telah dihapus, tidak ada versi saat ini.
Default Nilai default rekaman, seperti yang ditentukan oleh skema himpunan data atau sumber data.
Original Versi asli rekaman adalah salinan rekaman karena terakhir kali perubahan dilakukan dalam himpunan data. Dalam istilah praktis, ini biasanya adalah versi rekaman sebagai dibaca dari sumber data.
Proposed Versi rekaman yang diusulkan yang tersedia sementara saat Anda berada di tengah pembaruan — yaitu, antara waktu Anda memanggil BeginEdit metode dan EndEdit metode . Anda biasanya mengakses versi rekaman yang diusulkan dalam handler untuk peristiwa seperti RowChanging. Memanggil CancelEdit metode membalikkan perubahan dan menghapus versi baris data yang diusulkan.

Versi asli dan saat ini berguna saat informasi pembaruan dikirimkan ke sumber data. Biasanya, ketika pembaruan dikirim ke sumber data, informasi baru untuk database berada dalam versi rekaman saat ini. Informasi dari versi asli digunakan untuk menemukan rekaman yang akan diperbarui.

Misalnya, dalam kasus di mana kunci utama rekaman diubah, Anda memerlukan cara untuk menemukan rekaman yang benar di sumber data untuk memperbarui perubahan. Jika tidak ada versi asli, maka rekaman kemungkinan besar akan ditambahkan ke sumber data, menghasilkan tidak hanya dalam catatan ekstra yang tidak diinginkan, tetapi dalam satu catatan yang tidak akurat dan kedaluarsa. Dua versi juga digunakan dalam kontrol konkurensi. Anda dapat membandingkan versi asli dengan rekaman di sumber data untuk menentukan apakah rekaman telah berubah sejak dimuat ke dalam himpunan data.

Versi yang diusulkan berguna ketika Anda perlu melakukan validasi sebelum benar-benar melakukan perubahan pada himpunan data.

Bahkan jika rekaman telah berubah, tidak selalu ada versi asli atau saat ini dari baris tersebut. Saat Anda menyisipkan baris baru ke dalam tabel, tidak ada versi asli, hanya versi saat ini. Demikian pula, jika Anda menghapus baris dengan memanggil metode tabel Delete , ada versi asli, tetapi tidak ada versi saat ini.

Anda dapat menguji untuk melihat apakah versi rekaman tertentu ada dengan mengkueri metode baris HasVersion data. Anda dapat mengakses salah satu versi rekaman dengan meneruskan DataRowVersion nilai enumerasi sebagai argumen opsional saat Anda meminta nilai kolom.

Dapatkan rekaman yang diubah

Ini adalah praktik umum untuk tidak memperbarui setiap rekaman dalam himpunan data. Misalnya, pengguna mungkin bekerja dengan kontrol Formulir Windows DataGridView yang menampilkan banyak rekaman. Namun, pengguna mungkin hanya memperbarui beberapa rekaman, menghapus satu, dan menyisipkan yang baru. Himpunan data dan tabel data menyediakan metode (GetChanges) untuk mengembalikan hanya baris yang telah dimodifikasi.

Anda dapat membuat subset rekaman yang diubah menggunakan GetChanges metode tabel data (GetChanges) atau himpunan data (GetChanges) itu sendiri. Jika Anda memanggil metode untuk tabel data, metode tersebut mengembalikan salinan tabel hanya dengan rekaman yang diubah. Demikian pula, jika Anda memanggil metode pada himpunan data, Anda mendapatkan himpunan data baru dengan hanya rekaman yang diubah di dalamnya.

GetChanges dengan sendirinya mengembalikan semua rekaman yang diubah. Sebaliknya, dengan meneruskan yang diinginkan sebagai parameter ke GetChanges metode , Anda dapat menentukan subset rekaman yang diubah yang Anda inginkan: rekaman yang baru ditambahkan, rekaman yang ditandai untuk penghapusan, rekaman yang dilepas, atau rekaman yang dimodifikasiDataRowState.

Mendapatkan subset rekaman yang diubah berguna saat Anda ingin mengirim rekaman ke komponen lain untuk diproses. Alih-alih mengirim seluruh himpunan data, Anda dapat mengurangi overhead berkomunikasi dengan komponen lain dengan hanya mendapatkan rekaman yang dibutuhkan komponen.

Menerapkan perubahan dalam himpunan data

Saat perubahan dilakukan dalam himpunan data, RowState properti baris yang diubah diatur. Versi rekaman asli dan saat ini dibuat, dikelola, dan disediakan untuk Anda oleh RowVersion properti . Metadata yang disimpan di properti baris yang diubah ini diperlukan untuk mengirim pembaruan yang benar ke sumber data.

Jika perubahan mencerminkan status sumber data saat ini, Anda tidak perlu lagi mempertahankan informasi ini. Biasanya, ada dua kali ketika himpunan data dan sumbernya sinkron:

  • Segera setelah Anda memuat informasi ke dalam himpunan data, seperti saat Anda membaca data dari sumbernya.

  • Setelah mengirim perubahan dari himpunan data ke sumber data (tetapi tidak sebelumnya, karena Anda akan kehilangan informasi perubahan yang diperlukan untuk mengirim perubahan ke database).

Anda dapat menerapkan perubahan yang tertunda pada himpunan AcceptChanges data dengan memanggil metode . Biasanya, AcceptChanges dipanggil pada waktu berikut:

  • Setelah Anda memuat himpunan data. Jika Anda memuat himpunan data dengan memanggil metode TableAdapter Fill , maka adapter secara otomatis melakukan perubahan untuk Anda. Namun, jika Anda memuat himpunan data dengan menggabungkan himpunan data lain ke dalamnya, maka Anda harus melakukan perubahan secara manual.

    Catatan

    Anda dapat mencegah adaptor melakukan perubahan secara otomatis saat Anda memanggil Fill metode dengan mengatur AcceptChangesDuringFill properti adaptor ke false. Jika diatur ke false, maka RowState dari setiap baris yang disisipkan selama isi diatur ke Added.

  • Setelah Anda mengirim perubahan himpunan data ke proses lain, seperti layanan web XML.

    Perhatian

    Menerapkan perubahan dengan cara ini menghapus informasi perubahan apa pun. Jangan menerapkan perubahan hingga Anda selesai melakukan operasi yang mengharuskan aplikasi Anda mengetahui perubahan apa yang telah dilakukan dalam himpunan data.

Metode ini mencapai hal-hal berikut:

Metode AcceptChanges ini tersedia pada tiga tingkat. Anda dapat memanggilnya pada DataRow objek untuk menerapkan perubahan hanya untuk baris tersebut. Anda juga dapat memanggilnya pada DataTable objek untuk menerapkan semua baris dalam tabel. Terakhir, Anda dapat memanggilnya pada DataSet objek untuk menerapkan semua perubahan yang tertunda di semua rekaman semua tabel himpunan data.

Tabel berikut menjelaskan perubahan mana yang diterapkan berdasarkan objek apa yang dipanggil metode:

Metode Hasil
System.Data.DataRow.AcceptChanges Perubahan hanya diterapkan pada baris tertentu.
System.Data.DataTable.AcceptChanges Perubahan diterapkan pada semua baris dalam tabel tertentu.
System.Data.DataSet.AcceptChanges Perubahan diterapkan pada semua baris di semua tabel himpunan data.

Catatan

Jika Anda memuat himpunan data dengan memanggil metode TableAdapter Fill , Anda tidak perlu menerima perubahan secara eksplisit. Secara default, Fill metode memanggil AcceptChanges metode setelah selesai mengisi tabel data.

Metode terkait, RejectChanges, membatalkan efek perubahan dengan menyalin Original versi kembali ke Current versi rekaman. Ini juga mengatur RowState dari setiap rekaman kembali ke Unchanged.

Validasi Data

Untuk memverifikasi bahwa data dalam aplikasi Anda memenuhi persyaratan proses yang diteruskan, Anda sering harus menambahkan validasi. Ini mungkin melibatkan pemeriksaan bahwa entri pengguna dalam formulir sudah benar, memvalidasi data yang dikirim ke aplikasi Anda oleh aplikasi lain, atau bahkan memeriksa informasi yang dihitung dalam komponen Anda termasuk dalam batasan sumber data dan persyaratan aplikasi Anda.

Anda dapat memvalidasi data dengan beberapa cara:

  • Di lapisan bisnis, dengan menambahkan kode ke aplikasi Anda untuk memvalidasi data. Himpunan data adalah satu tempat Anda dapat melakukan ini. Himpunan data memberikan beberapa keuntungan dari validasi back-end — seperti kemampuan untuk memvalidasi perubahan saat nilai kolom dan baris berubah. Untuk informasi selengkapnya, lihat Memvalidasi data dalam himpunan data.

  • Di lapisan presentasi, dengan menambahkan validasi ke formulir. Untuk informasi selengkapnya, lihat Validasi input pengguna di Formulir Windows.

  • Di ujung belakang data, dengan mengirim data ke sumber data — misalnya, database — dan memungkinkannya untuk menerima atau menolak data. Jika Anda bekerja dengan database yang memiliki fasilitas canggih untuk memvalidasi data dan memberikan informasi kesalahan, ini bisa menjadi pendekatan praktis karena Anda dapat memvalidasi data di mana pun asalnya. Namun, pendekatan ini mungkin tidak mengakomodasi persyaratan validasi khusus aplikasi. Selain itu, memiliki data validasi sumber data dapat mengakibatkan banyak perjalanan pulang pergi ke sumber data, tergantung pada bagaimana aplikasi Anda memfasilitasi resolusi kesalahan validasi yang dimunculkan oleh ujung belakang.

    Penting

    Saat menggunakan perintah data dengan CommandType properti yang diatur ke Text, periksa dengan cermat informasi yang dikirim dari klien sebelum meneruskannya ke database Anda. Pengguna jahat mungkin mencoba mengirim (memasukkan) pernyataan yang dimodifikasi atau SQL tambahan dalam upaya untuk mendapatkan akses yang tidak sah atau merusak database. Sebelum Anda mentransfer input pengguna ke database, selalu verifikasi bahwa informasi tersebut valid. Ini adalah praktik terbaik untuk selalu menggunakan kueri berparameter atau prosedur tersimpan jika memungkinkan.

Mengirimkan pembaruan ke sumber data

Setelah perubahan dilakukan dalam himpunan data, Anda dapat mengirimkan perubahan ke sumber data. Paling umum, Anda melakukan ini dengan memanggil Update metode TableAdapter (atau adaptor data). Metode mengulangi setiap rekaman dalam tabel data, menentukan jenis pembaruan apa yang diperlukan (memperbarui, menyisipkan, atau menghapus), jika ada, lalu menjalankan perintah yang sesuai.

Sebagai ilustrasi tentang bagaimana pembaruan dibuat, misalkan aplikasi Anda menggunakan himpunan data yang berisi satu tabel data. Aplikasi mengambil dua baris dari database. Setelah pengambilan, tabel data dalam memori terlihat seperti ini:

(RowState)     CustomerID   Name             Status
(Unchanged)    c200         Robert Lyon      Good
(Unchanged)    c400         Nancy Buchanan    Pending

Aplikasi Anda mengubah status Nancy Buchanan menjadi "Disukai." Akibat perubahan ini, nilai properti untuk baris tersebut RowState berubah dari Unchanged ke Modified. Nilai RowState properti untuk baris pertama tetap Unchanged. Tabel data sekarang terlihat seperti ini:

(RowState)     CustomerID   Name             Status
(Unchanged)    c200         Robert Lyon      Good
(Modified)     c400         Nancy Buchanan    Preferred

Aplikasi Anda sekarang memanggil Update metode untuk mengirimkan himpunan data ke database. Metode ini memeriksa setiap baris secara bergantian. Untuk baris pertama, metode tidak mengirimkan pernyataan SQL ke database karena baris tersebut tidak berubah sejak awalnya diambil dari database.

Namun, untuk baris kedua, Update metode secara otomatis memanggil perintah data yang benar dan mengirimkannya ke database. Sintaks spesifik pernyataan SQL bergantung pada dialek SQL yang didukung oleh penyimpanan data yang mendasar. Tetapi, sifat umum berikut dari pernyataan SQL yang dikirimkan patut diperhatikan:

  • Pernyataan SQL yang UPDATE ditransmisikan adalah pernyataan. Adaptor tahu untuk menggunakan UPDATE pernyataan karena nilai RowState properti adalah Modified.

  • Pernyataan SQL yang ditransmisikan mencakup klausul yang WHERE menunjukkan bahwa target UPDATE pernyataan adalah baris tempat CustomerID = 'c400'. Bagian pernyataan SELECT ini membedakan baris target dari yang lain karena CustomerID adalah kunci utama tabel target. Informasi untuk WHERE klausul berasal dari versi asli rekaman (DataRowVersion.Original), jika nilai yang diperlukan untuk mengidentifikasi baris telah berubah.

  • Pernyataan SQL yang ditransmisikan menyertakan SET klausul, untuk mengatur nilai baru kolom yang dimodifikasi.

    Catatan

    Jika properti TableAdapter UpdateCommand telah diatur ke nama prosedur tersimpan, adaptor tidak membuat pernyataan SQL. Sebaliknya, ia memanggil prosedur tersimpan dengan parameter yang sesuai yang diteruskan.

Meneruskan parameter

Anda biasanya menggunakan parameter untuk meneruskan nilai untuk rekaman yang akan diperbarui dalam database. Saat metode TableAdapter Update menjalankan UPDATE pernyataan, metode perlu mengisi nilai parameter. Ini mendapatkan nilai-nilai ini dari Parameters koleksi untuk perintah data yang sesuai — dalam hal ini, UpdateCommand objek di TableAdapter.

Jika Anda telah menggunakan alat Visual Studio untuk menghasilkan adaptor data, UpdateCommand objek berisi kumpulan parameter yang sesuai dengan setiap tempat penampung parameter dalam pernyataan.

Properti System.Data.SqlClient.SqlParameter.SourceColumn setiap parameter menunjuk ke kolom dalam tabel data. Misalnya, SourceColumn properti untuk au_id parameter dan Original_au_id diatur ke kolom apa pun dalam tabel data berisi id penulis. Saat metode adaptor Update berjalan, metode membaca kolom id penulis dari rekaman yang sedang diperbarui dan mengisi nilai ke dalam pernyataan.

Dalam pernyataan UPDATE , Anda perlu menentukan nilai baru (nilai yang akan ditulis ke rekaman) serta nilai lama (sehingga rekaman dapat ditemukan di database). Oleh karena itu, ada dua parameter untuk setiap nilai: satu untuk SET klausul dan yang berbeda untuk WHERE klausa. Kedua parameter membaca data dari rekaman yang sedang diperbarui, tetapi mereka mendapatkan versi nilai kolom yang berbeda berdasarkan properti parameter SourceVersion . Parameter untuk SET klausul mendapatkan versi saat ini, dan parameter untuk WHERE klausul mendapatkan versi asli.

Catatan

Anda juga dapat mengatur nilai dalam Parameters koleksi sendiri dalam kode, yang biasanya akan Anda lakukan di penanganan aktivitas untuk peristiwa adaptor RowChanging data.