DataAdapter.Update(DataSet) Metode

Definisi

Memanggil pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam yang ditentukan DataSet dari DataTable "Tabel" bernama

public:
 virtual int Update(System::Data::DataSet ^ dataSet);
public:
 abstract int Update(System::Data::DataSet ^ dataSet);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public virtual int Update(System.Data.DataSet dataSet);
public virtual int Update(System.Data.DataSet dataSet);
public abstract int Update(System.Data.DataSet dataSet);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
abstract member Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
override this.Update : System.Data.DataSet -> int
abstract member Update : System.Data.DataSet -> int
Public Overridable Function Update (dataSet As DataSet) As Integer
Public MustOverride Function Update (dataSet As DataSet) As Integer

Parameter

dataSet
DataSet

DataSet digunakan untuk memperbarui sumber data.

Mengembalikan

Jumlah baris berhasil diperbarui dari DataSet.

Penerapan

Atribut

Pengecualian

Tabel sumber tidak valid.

Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE menghasilkan nol rekaman yang terpengaruh.

Contoh

Contoh berikut menggunakan kelas turunan, OleDbDataAdapter, ke Update sumber data.

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

Pembaruan dilakukan berdasarkan baris demi baris. Untuk setiap baris yang disisipkan, dimodifikasi, dan dihapus, Update metode menentukan jenis perubahan yang telah dilakukan di atasnya (Sisipkan, Perbarui, atau Hapus). Bergantung pada jenis perubahan, Inserttemplat perintah , Update, atau Delete dijalankan untuk menyebarkan baris yang dimodifikasi ke sumber data. Ketika aplikasi memanggil metode Update, DataAdapter memeriksa properti RowState, 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 dalam DataTable.

Perlu dicatat bahwa pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil metode GetChanges dalam situasi di mana Anda harus mengontrol urutan jenis pernyataan (misalnya, INSERT sebelum UPDATE). Untuk informasi selengkapnya, lihat Memperbarui Sumber Data dengan DataAdapters.

Jika pernyataan INSERT, UPDATE, atau DELETE belum ditentukan, metode 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 Update mengambil baris dari tabel yang tercantum dalam pemetaan pertama sebelum melakukan pembaruan. Update kemudian me-refresh baris menggunakan nilai properti UpdatedRowSource. Setiap baris tambahan yang dikembalikan diabaikan.

Setelah data dimuat kembali ke DataSet, peristiwa OnRowUpdated dinaikkan, memungkinkan pengguna untuk memeriksa baris DataSet yang direkonsiliasi 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:

  1. Nilai dalam DataRow dipindahkan ke nilai parameter.

  2. Peristiwa OnRowUpdating diaktifkan.

  3. Perintah dijalankan.

  4. Jika perintah diatur ke FirstReturnedRecord, maka hasil pertama yang dikembalikan ditempatkan di DataRow.

  5. Jika ada parameter output, parameter tersebut ditempatkan di DataRow.

  6. Peristiwa OnRowUpdated diaktifkan.

  7. DataRow.AcceptChanges dipanggil. Ini akan meningkatkan DataTable.RowChanging peristiwa dan DataTable.RowChanged untuk yang diperbarui DataRow.

Setiap perintah yang terkait dengan DataAdapter biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui SourceColumn properti dan SourceVersion kelas penyedia Parameter data .NET. SourceColumn mengacu pada kolom DataTable yang dirujuk DataAdapter untuk mendapatkan nilai parameter untuk baris saat ini.

SourceColumn mengacu pada nama kolom yang tidak dipetakan sebelum pemetaan tabel diterapkan. Jika SourceColumn mengacu pada kolom yang tidak ada, tindakan yang diambil bergantung pada salah satu nilai MissingMappingAction berikut.

Nilai enumerasi Tindakan yang diambil
MissingMappingAction.Passthrough Gunakan nama kolom sumber dan nama tabel di DataSet jika tidak ada pemetaan.
MissingMappingAction.Ignore SystemException dihasilkan. Ketika pemetaan diatur secara eksplisit, pemetaan yang hilang untuk parameter input biasanya merupakan hasil dari 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 menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Diusulkan dari nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausul WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.

Memanggil AcceptChanges metode atau AcceptChanges metode akan menerapkan semua perubahan di DataSet atau DataTable. Jika salah satu metode ini dipanggil sebelum Update metode dipanggil, tidak ada perubahan yang akan dilakukan ketika Update metode dipanggil, kecuali perubahan lebih lanjut telah dilakukan sejak AcceptChanges atau AcceptChanges dipanggil.

Note

Jika terjadi kesalahan saat memperbarui baris, pengecualian dilemparkan dan eksekusi pembaruan dihentikan. Untuk melanjutkan operasi pembaruan tanpa menghasilkan pengecualian saat terjadi kesalahan, atur properti ContinueUpdateOnError ke true sebelum memanggil Update. Anda juga dapat menanggapi kesalahan berdasarkan per baris dalam peristiwa RowUpdated DataAdapter. Untuk melanjutkan operasi pembaruan tanpa menghasilkan pengecualian dalam peristiwa RowUpdated, atur properti StatusRowUpdatedEventArgs ke Continue.

Untuk setiap kolom yang Anda sebarkan ke sumber data pada Update, parameter harus ditambahkan ke InsertCommand, , UpdateCommandatau DeleteCommand. Properti SourceColumn parameter harus diatur ke nama kolom. Pengaturan ini menunjukkan bahwa nilai parameter tidak diatur secara manual, tetapi diambil dari kolom tertentu di baris yang saat ini diproses.

Berlaku untuk

Lihat juga