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 TableAdapterDengan memanggil salah
DBDirect
satu metode TableAdapterDengan 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
.
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.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:
Current Menulis versi rekaman ke dalam versinya dan menimpa versi aslinyaOriginal.
Menghapus baris apa pun di mana RowState properti diatur ke Deleted.
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 menggunakanUPDATE
pernyataan karena nilai RowState properti adalah Modified.Pernyataan SQL yang ditransmisikan mencakup klausul yang
WHERE
menunjukkan bahwa targetUPDATE
pernyataan adalah baris tempatCustomerID = 'c400'
. Bagian pernyataanSELECT
ini membedakan baris target dari yang lain karenaCustomerID
adalah kunci utama tabel target. Informasi untukWHERE
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.
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk