IDataAdapter.Update(DataSet) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
public:
int Update(System::Data::DataSet ^ dataSet);
public int Update (System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer
Parameter
Mengembalikan
Jumlah baris berhasil diperbarui dari DataSet.
Pengecualian
Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE menghasilkan nol rekaman yang terpengaruh.
Contoh
Contoh berikut menggunakan kelas turunan, OleDbDataAdapter, ke Update sumber data. Contoh ini mengasumsikan bahwa Anda telah membuat OleDbDataAdapter dan DataSet.
static private DataSet CreateCommandAndUpdate(
string connectionString,
string queryString)
{
DataSet dataSet = new DataSet();
using (OleDbConnection connection =
new OleDbConnection(connectionString))
{
connection.Open();
OleDbDataAdapter adapter =
new OleDbDataAdapter();
adapter.SelectCommand =
new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder =
new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
// Code to modify data in the DataSet here.
// Without the OleDbCommandBuilder, this line would fail.
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataSet);
}
return dataSet;
}
Public Function CreateCommandAndUpdate( _
ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Dim dataSet As New DataSet()
Using connection As New OleDbConnection(connectionString)
connection.Open()
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand( _
queryString, connection)
Dim builder As OleDbCommandBuilder = _
New OleDbCommandBuilder(adapter)
adapter.Fill(dataSet)
' Code to modify the data in the DataSet here.
' Without the OleDbCommandBuilder this line would fail.
builder.GetUpdateCommand()
adapter.Update(dataSet)
End Using
Return dataSet
End Function
Keterangan
Ketika aplikasi memanggil Update metode , IDataAdapterRowState memeriksa properti , dan menjalankan pernyataan INSERT, UPDATE, atau DELETE yang diperlukan secara berulang untuk setiap baris, berdasarkan urutan indeks yang dikonfigurasi di DataSet. Misalnya, Update mungkin menjalankan pernyataan DELETE, diikuti dengan pernyataan INSERT, lalu pernyataan DELETE lainnya, karena urutan baris di DataTable.
Ketahuilah bahwa pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil GetChanges metode jika Anda harus mengontrol urutan jenis pernyataan (misalnya, INSERT sebelum UPDATEs). Untuk informasi selengkapnya, lihat Memperbarui Sumber Data dengan DataAdapters.
Jika pernyataan INSERT, UPDATE, atau DELETE belum ditentukan, metode akan Update menghasilkan pengecualian. Namun, Anda dapat membuat SqlCommandBuilder objek atau OleDbCommandBuilder untuk secara otomatis menghasilkan pernyataan SQL untuk pembaruan tabel tunggal jika Anda mengatur SelectCommand
properti penyedia data .NET Framework. Kemudian, setiap pernyataan SQL tambahan yang tidak Anda tetapkan dihasilkan oleh CommandBuilder. Logika generasi ini mengharuskan informasi kolom kunci ada di DataSet. Untuk informasi selengkapnya lihat Membuat Perintah dengan CommandBuilders.
Metode mengambil Update baris dari tabel yang tercantum dalam pemetaan pertama sebelum melakukan pembaruan. Kemudian Update memperbarui baris menggunakan nilai UpdatedRowSource properti . Setiap baris tambahan yang dikembalikan diabaikan.
Setelah data dimuat kembali ke dalam DataSet, OnRowUpdated peristiwa dinaikkan, memungkinkan pengguna untuk memeriksa baris yang direkonsiliasi DataSet dan parameter output apa pun yang dikembalikan oleh perintah . Setelah baris berhasil diperbarui, perubahan pada baris tersebut diterima.
Saat menggunakan Update, urutan eksekusi adalah sebagai berikut:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Acara OnRowUpdating dinaikkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, maka hasil pertama yang dikembalikan dimasukkan ke DataRowdalam .Jika ada parameter output, parameter tersebut dimasukkan ke DataRowdalam .
Acara OnRowUpdated dinaikkan.
AcceptChanges dipanggil.
Setiap perintah yang IDataAdapter terkait dengan biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui SourceColumn
properti dan SourceVersion
kelas penyedia Parameter
data .NET Framework.
SourceColumn
merujuk ke DataTable kolom yang IDataAdapter dirujuk untuk mendapatkan nilai parameter untuk baris saat ini.
SourceColumn
mengacu pada nama kolom yang tidak dipetakan sebelum pemetaan tabel apa pun telah diterapkan. Jika SourceColumn
merujuk ke kolom yang tidak ada, tindakan yang diambil bergantung pada salah satu nilai berikut MissingMappingAction .
Nilai Enumerasi | Tindakan yang Diambil |
---|---|
MissingMappingAction.Passthrough |
Gunakan nama kolom sumber dan nama tabel dalam DataSet jika tidak ada pemetaan yang ada. |
MissingMappingAction.Ignore |
SystemException dihasilkan. Ketika pemetaan diatur secara eksplisit, pemetaan yang hilang untuk parameter input biasanya disebabkan oleh kesalahan. |
MissingMappingAction.Error |
SystemException dihasilkan. |
Properti SourceColumn
juga digunakan untuk memetakan nilai untuk parameter output atau input/output kembali ke DataSet
. Pengecualian dihasilkan jika mengacu pada kolom yang tidak ada.
Properti SourceVersion
kelas penyedia Parameter
data .NET Framework menentukan apakah akan menggunakan Original
, , Current
atau Proposed
versi nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausa WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.
Catatan
Jika terjadi kesalahan saat memperbarui baris, pengecualian dilemparkan dan eksekusi pembaruan dihentikan. Untuk melanjutkan operasi pembaruan tanpa menghasilkan pengecualian saat terjadi kesalahan, atur ContinueUpdateOnError properti ke true
sebelum memanggil Update. Anda juga dapat menanggapi kesalahan berdasarkan per baris jika RowUpdated
terjadi DataAdapter. Untuk melanjutkan operasi pembaruan tanpa menghasilkan pengecualian dalam RowUpdated
peristiwa, atur Status properti ke RowUpdatedEventArgsContinue.