Share via


DbDataAdapter.Update Metode

Definisi

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus di DataSet.

Overload

Update(DataSet, String)

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dengan DataSet nama yang ditentukanDataTable.

Update(DataRow[], DataTableMapping)

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam array DataRow objek yang ditentukan.

Update(DataTable)

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam yang ditentukanDataTable.

Update(DataSet)

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam yang ditentukanDataSet.

Update(DataRow[])

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam array yang ditentukan di DataSet.

Update(DataSet, String)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dengan DataSet nama yang ditentukanDataTable.

public:
 int Update(System::Data::DataSet ^ dataSet, System::String ^ srcTable);
public int Update (System.Data.DataSet dataSet, string srcTable);
override this.Update : System.Data.DataSet * string -> int
Public Function Update (dataSet As DataSet, srcTable As String) As Integer

Parameter

dataSet
DataSet

yang DataSet digunakan untuk memperbarui sumber data.

srcTable
String

Nama tabel sumber yang digunakan untuk pemetaan tabel.

Mengembalikan

Jumlah baris berhasil diperbarui dari DataSet.

Pengecualian

Tabel sumber tidak valid.

Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE mengakibatkan tidak ada rekaman yang terpengaruh.

Contoh

Contoh berikut menggunakan kelas turunan, OleDbDataAdapter, untuk memperbarui sumber data.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString, string tableName)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers, tableName);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String, _
    ByVal tableName As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers, tableName)

        Return customers
    End Using
End Function

Keterangan

Saat aplikasi memanggil Update metode , DbDataAdapter aplikasi memeriksa RowState 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.

Perlu dicatat bahwa pernyataan-pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil GetChanges metode 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, Update metode 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 memerlukan informasi kolom kunci untuk hadir di DataSet. Untuk informasi selengkapnya, lihat Membuat Perintah dengan CommandBuilders.

Metode ini Update mendukung skenario di mana DataSet berisi beberapa DataTable objek yang namanya hanya berbeda menurut kasus. Saat beberapa tabel dengan nama yang sama, tetapi kasus yang berbeda, ada dalam DataSet, Update melakukan perbandingan peka huruf besar/kecil untuk menemukan tabel yang sesuai, dan menghasilkan pengecualian jika tidak ada kecocokan yang tepat. Kode C# berikut mengilustrasikan perilaku ini.

DataSet ds = new DataSet();  
 ds.Tables.Add("aaa");  
 ds.Tables.Add("AAA");  
 adapter.Update(ds, "aaa"); // Updates "aaa", which already exists in the DataSet.  
 adapter.Update(ds, "AAA"); // Updates "AAA", which already exists in the DataSet.  
    adapter.Update(ds, "Aaa"); // Results in an exception.  

Jika Update dipanggil dan DataSet hanya berisi satu DataTable yang namanya hanya berbeda menurut kasus, yang DataTable diperbarui. Dalam skenario ini, perbandingannya tidak peka huruf besar/kecil. Kode C# berikut mengilustrasikan perilaku ini.

DataSet dataset = new DataSet();  
 dataset.Tables.Add("aaa");  
    adapter.Update(dataset, "AAA"); // Updates table "aaa" because only one similarly named table is in the DataSet.  

Metode ini Update mengambil baris dari tabel yang tercantum dalam pemetaan pertama sebelum melakukan pembaruan. kemudian Update merefresh baris menggunakan nilai UpdatedRowSource properti . Setiap baris tambahan yang dikembalikan diabaikan.

Setelah data dimuat kembali ke , DataSetOnRowUpdated 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:

  1. Nilai dalam DataRow dipindahkan ke nilai parameter.

  2. Acara OnRowUpdating dinaikkan.

  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. Acara OnRowUpdated dinaikkan.

  7. AcceptChanges dipanggil.

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

SourceColumn mengacu pada nama kolom yang tidak dipetakan sebelum pemetaan tabel 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 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 Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Usulan dari 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.

Lihat juga

Berlaku untuk

Update(DataRow[], DataTableMapping)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam array DataRow objek yang ditentukan.

protected:
 virtual int Update(cli::array <System::Data::DataRow ^> ^ dataRows, System::Data::Common::DataTableMapping ^ tableMapping);
protected virtual int Update (System.Data.DataRow[] dataRows, System.Data.Common.DataTableMapping tableMapping);
override this.Update : System.Data.DataRow[] * System.Data.Common.DataTableMapping -> int
Protected Overridable Function Update (dataRows As DataRow(), tableMapping As DataTableMapping) As Integer

Parameter

dataRows
DataRow[]

Array DataRow objek yang digunakan untuk memperbarui sumber data.

tableMapping
DataTableMapping

TableMappings Koleksi yang akan digunakan.

Mengembalikan

Jumlah baris berhasil diperbarui dari array DataRow objek.

Pengecualian

Tabel sumber tidak valid.

Tidak DataRow ada untuk diperbarui.

-atau-

Tidak DataTable ada untuk diperbarui.

-atau-

Tidak DataSet ada untuk digunakan sebagai sumber.

Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE mengakibatkan tidak ada rekaman yang terpengaruh.

Keterangan

Saat aplikasi memanggil Update metode , DbDataAdapter aplikasi memeriksa RowState 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.

Perlu dicatat bahwa pernyataan-pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil GetChanges metode dalam situasi di mana 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, Update metode 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 memerlukan informasi kolom kunci untuk hadir di DataSet. Untuk informasi selengkapnya, lihat Membuat Perintah dengan CommandBuilders.

Metode ini Update mengambil baris dari tabel yang tercantum dalam pemetaan pertama sebelum melakukan pembaruan. kemudian Update merefresh baris menggunakan nilai UpdatedRowSource properti . Setiap baris tambahan yang dikembalikan diabaikan.

Setelah data dimuat kembali ke , DataSetOnRowUpdated 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:

  1. Nilai dalam DataRow dipindahkan ke nilai parameter.

  2. Acara OnRowUpdating dinaikkan.

  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. Acara OnRowUpdated dinaikkan.

  7. AcceptChanges dipanggil.

Setiap perintah yang DbDataAdapter 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 DbDataAdapter 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 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 Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Usulan dari 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.

Lihat juga

Berlaku untuk

Update(DataTable)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam baris yang ditentukanDataTable.

public:
 int Update(System::Data::DataTable ^ dataTable);
public int Update (System.Data.DataTable dataTable);
override this.Update : System.Data.DataTable -> int
Public Function Update (dataTable As DataTable) As Integer

Parameter

dataTable
DataTable

yang DataTable digunakan untuk memperbarui sumber data.

Mengembalikan

Jumlah baris berhasil diperbarui dari DataTable.

Pengecualian

Tabel sumber tidak valid.

Tidak DataRow ada untuk diperbarui.

-atau-

Tidak DataTable ada untuk diperbarui.

-atau-

Tidak DataSet ada untuk digunakan sebagai sumber.

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

Contoh

Contoh berikut menggunakan kelas turunan, , OleDbDataAdapteruntuk memperbarui sumber data.

public DataTable CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataTable customers = new DataTable();
        adapter.Fill(customers);

        // code to modify data in DataTable here

        adapter.Update(customers);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataTable

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataTable()
        adapter.Fill(customers)

        ' Code to modify data in DataTable here 

        adapter.Update(customers)
        Return customers
    End Using
End Function

Keterangan

Ketika aplikasi memanggil Update metode , DbDataAdapterRowState 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.

Perlu dicatat bahwa pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil GetChanges metode dalam situasi di mana 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 merefresh 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:

  1. Nilai dalam DataRow dipindahkan ke nilai parameter.

  2. Acara OnRowUpdating dinaikkan.

  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. Acara OnRowUpdated dinaikkan.

  7. AcceptChanges dipanggil.

Setiap perintah yang DbDataAdapter 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 DbDataAdapter 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 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 Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Usulan dari 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.

Lihat juga

Berlaku untuk

Update(DataSet)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam baris yang ditentukanDataSet.

public:
 override int Update(System::Data::DataSet ^ dataSet);
public override int Update (System.Data.DataSet dataSet);
override this.Update : System.Data.DataSet -> int
Public Overrides Function Update (dataSet As DataSet) As Integer

Parameter

dataSet
DataSet

yang DataSet digunakan untuk memperbarui sumber data.

Mengembalikan

Jumlah baris berhasil diperbarui dari DataSet.

Penerapan

Pengecualian

Tabel sumber tidak valid.

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

Contoh

Contoh berikut menggunakan kelas turunan, , OleDbDataAdapteruntuk memperbarui sumber data.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        adapter.Update(customers);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        adapter.Update(customers)

        Return customers
    End Using
End Function

Keterangan

Ketika aplikasi memanggil Update metode , DbDataAdapterRowState 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.

Perlu dicatat bahwa pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil GetChanges metode dalam situasi di mana 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 merefresh 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:

  1. Nilai dalam DataRow dipindahkan ke nilai parameter.

  2. Acara OnRowUpdating dinaikkan.

  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. Acara OnRowUpdated dinaikkan.

  7. AcceptChanges dipanggil.

Setiap perintah yang DbDataAdapter 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 DbDataAdapter 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 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 Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Usulan dari 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.

Lihat juga

Berlaku untuk

Update(DataRow[])

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Updates nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam array yang ditentukan di DataSet.

public:
 int Update(cli::array <System::Data::DataRow ^> ^ dataRows);
public int Update (System.Data.DataRow[] dataRows);
override this.Update : System.Data.DataRow[] -> int
Public Function Update (dataRows As DataRow()) As Integer

Parameter

dataRows
DataRow[]

Array DataRow objek yang digunakan untuk memperbarui sumber data.

Mengembalikan

Jumlah baris berhasil diperbarui dari DataSet.

Pengecualian

Tabel sumber tidak valid.

Tidak DataRow ada untuk diperbarui.

-atau-

Tidak DataTable ada untuk diperbarui.

-atau-

Tidak DataSet ada untuk digunakan sebagai sumber.

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

Contoh

Contoh berikut menggunakan kelas turunan, , OleDbDataAdapteruntuk memperbarui sumber data.

public DataSet CreateCmdsAndUpdate(string connectionString,
    string queryString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        adapter.SelectCommand = new OleDbCommand(queryString, connection);
        OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);

        connection.Open();

        DataSet customers = new DataSet();
        adapter.Fill(customers);

        //code to modify data in dataset here

        //Insert new records from DataSet
        DataRow[] rows = customers.Tables[0].Select(
            null, null, DataViewRowState.Added);
        adapter.Update(rows);

        return customers;
    }
}
Public Function CreateCmdsAndUpdate(ByVal connectionString As String, _
    ByVal queryString As String) As DataSet

    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter()
        adapter.SelectCommand = New OleDbCommand(queryString, connection)
        Dim builder As New OleDbCommandBuilder(adapter)

        connection.Open()

        Dim customers As New DataSet()
        adapter.Fill(customers)

        ' Code to modify data in DataSet here 

        ' Insert new records from DataSet
        Dim rows() As DataRow = customers.Tables(0).Select( _
            Nothing, Nothing, DataViewRowState.Added)
        adapter.Update(rows)

        Return customers
    End Using
End Function

Keterangan

Ketika aplikasi memanggil Update metode , DbDataAdapterRowState 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.

Perlu dicatat bahwa pernyataan ini tidak dilakukan sebagai proses batch; setiap baris diperbarui satu per satu. Aplikasi dapat memanggil GetChanges metode dalam situasi di mana 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 merefresh 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:

  1. Nilai dalam DataRow dipindahkan ke nilai parameter.

  2. Acara OnRowUpdating dinaikkan.

  3. Perintah dijalankan.

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

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

  6. Acara OnRowUpdated dinaikkan.

  7. AcceptChanges dipanggil.

Setiap perintah yang DbDataAdapter 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 DbDataAdapter 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 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 Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Usulan dari 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.

Lihat juga

Berlaku untuk