DbDataAdapter.Update 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.
Perbarui 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) |
Memperbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus di DataSet dengan nama DataTable yang ditentukan. |
Update(DataRow[], DataTableMapping) |
Memperbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam array objek DataRow yang ditentukan. |
Update(DataTable) |
Perbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam DataTableyang ditentukan. |
Update(DataSet) |
Perbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam DataSetyang ditentukan. |
Update(DataRow[]) |
Perbarui 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
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
- srcTable
- String
Nama tabel sumber yang akan digunakan untuk pemetaan tabel.
Mengembalikan
Jumlah baris berhasil diperbarui dari DataSet.
Pengecualian
DataSet tidak valid.
Tabel sumber tidak valid.
Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE menghasilkan nol 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
Ketika aplikasi memanggil metode Update, DbDataAdapter 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 objek SqlCommandBuilder atau OleDbCommandBuilder untuk secara otomatis menghasilkan pernyataan SQL untuk pembaruan tabel tunggal jika Anda mengatur properti SelectCommand
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 mendukung skenario di mana DataSet berisi beberapa objek DataTable yang namanya berbeda hanya menurut kasus. Ketika 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 berbeda hanya menurut kasus, DataTable tersebut 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 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:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Peristiwa OnRowUpdating dimunculkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, maka hasil pertama yang dikembalikan ditempatkan di DataRow.Jika ada parameter output, parameter tersebut ditempatkan di DataRow.
Peristiwa OnRowUpdated dimunculkan.
AcceptChanges dipanggil.
Setiap perintah yang terkait dengan DbDataAdapter biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui properti SourceColumn
dan SourceVersion
dari kelas Parameter
penyedia data .NET Framework.
SourceColumn
mengacu pada kolom DataTable 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
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
dari kelas Parameter
penyedia data .NET Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Yang Diusulkan dari nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausul WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.
Nota
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.
Lihat juga
-
Memanipulasi Data (ADO.NET) - DbProviderFactories (ADO.NET)
- Gambaran Umum
ADO.NET
Berlaku untuk
Update(DataRow[], DataTableMapping)
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
Memperbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam array objek DataRow 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
- tableMapping
- DataTableMapping
Koleksi TableMappings untuk digunakan.
Mengembalikan
Jumlah baris berhasil diperbarui dari array objek DataRow.
Pengecualian
DataSet tidak valid.
Tabel sumber tidak valid.
Tidak ada DataRow untuk diperbarui.
-atau-
Tidak ada DataTable untuk diperbarui.
-atau-
Tidak ada DataSet untuk digunakan sebagai sumber.
Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE menghasilkan nol rekaman yang terpengaruh.
Keterangan
Ketika aplikasi memanggil metode Update, DbDataAdapter 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 UPDATEs). 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 objek SqlCommandBuilder atau OleDbCommandBuilder untuk secara otomatis menghasilkan pernyataan SQL untuk pembaruan tabel tunggal jika Anda mengatur properti SelectCommand
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:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Peristiwa OnRowUpdating dimunculkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, maka hasil pertama yang dikembalikan ditempatkan di DataRow.Jika ada parameter output, parameter tersebut ditempatkan di DataRow.
Peristiwa OnRowUpdated dimunculkan.
AcceptChanges dipanggil.
Setiap perintah yang terkait dengan DbDataAdapter biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui properti SourceColumn
dan SourceVersion
dari kelas Parameter
penyedia data .NET Framework.
SourceColumn
mengacu pada kolom DataTable 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
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
dari kelas Parameter
penyedia data .NET Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Yang Diusulkan dari nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausul WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.
Nota
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.
Lihat juga
-
Memanipulasi Data (ADO.NET) - DbProviderFactories (ADO.NET)
- Gambaran Umum
ADO.NET
Berlaku untuk
Update(DataTable)
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
Perbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam DataTableyang ditentukan.
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
Mengembalikan
Jumlah baris berhasil diperbarui dari DataTable.
Pengecualian
DataSet tidak valid.
Tabel sumber tidak valid.
Tidak ada DataRow untuk diperbarui.
-atau-
Tidak ada DataTable untuk diperbarui.
-atau-
Tidak ada DataSet untuk digunakan sebagai sumber.
Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE menghasilkan nol rekaman yang terpengaruh.
Contoh
Contoh berikut menggunakan kelas turunan, OleDbDataAdapter, untuk 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 metode Update, DbDataAdapter 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 UPDATEs). 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 objek SqlCommandBuilder atau OleDbCommandBuilder untuk secara otomatis menghasilkan pernyataan SQL untuk pembaruan tabel tunggal jika Anda mengatur properti SelectCommand
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:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Peristiwa OnRowUpdating dimunculkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, maka hasil pertama yang dikembalikan ditempatkan di DataRow.Jika ada parameter output, parameter tersebut ditempatkan di DataRow.
Peristiwa OnRowUpdated dimunculkan.
AcceptChanges dipanggil.
Setiap perintah yang terkait dengan DbDataAdapter biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui properti SourceColumn
dan SourceVersion
dari kelas Parameter
penyedia data .NET Framework.
SourceColumn
mengacu pada kolom DataTable 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
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
dari kelas Parameter
penyedia data .NET Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Yang Diusulkan dari nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausul WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.
Nota
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.
Lihat juga
-
Memanipulasi Data (ADO.NET) - DbProviderFactories (ADO.NET)
- Gambaran Umum
ADO.NET
Berlaku untuk
Update(DataSet)
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
Perbarui nilai dalam database dengan menjalankan pernyataan INSERT, UPDATE, atau DELETE masing-masing untuk setiap baris yang disisipkan, diperbarui, atau dihapus dalam DataSetyang ditentukan.
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
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, OleDbDataAdapter, untuk 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 metode Update, DbDataAdapter 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 UPDATEs). 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 objek SqlCommandBuilder atau OleDbCommandBuilder untuk secara otomatis menghasilkan pernyataan SQL untuk pembaruan tabel tunggal jika Anda mengatur properti SelectCommand
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:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Peristiwa OnRowUpdating dimunculkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, maka hasil pertama yang dikembalikan ditempatkan di DataRow.Jika ada parameter output, parameter tersebut ditempatkan di DataRow.
Peristiwa OnRowUpdated dimunculkan.
AcceptChanges dipanggil.
Setiap perintah yang terkait dengan DbDataAdapter biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui properti SourceColumn
dan SourceVersion
dari kelas Parameter
penyedia data .NET Framework.
SourceColumn
mengacu pada kolom DataTable 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
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
dari kelas Parameter
penyedia data .NET Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Yang Diusulkan dari nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausul WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.
Nota
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.
Lihat juga
-
Memanipulasi Data (ADO.NET) - DbProviderFactories (ADO.NET)
- Gambaran Umum
ADO.NET
Berlaku untuk
Update(DataRow[])
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
- Sumber:
- DbDataAdapter.cs
Perbarui 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
Mengembalikan
Jumlah baris berhasil diperbarui dari DataSet.
Pengecualian
DataSet tidak valid.
Tabel sumber tidak valid.
Tidak ada DataRow untuk diperbarui.
-atau-
Tidak ada DataTable untuk diperbarui.
-atau-
Tidak ada DataSet untuk digunakan sebagai sumber.
Upaya untuk menjalankan pernyataan INSERT, UPDATE, atau DELETE menghasilkan nol rekaman yang terpengaruh.
Contoh
Contoh berikut menggunakan kelas turunan, OleDbDataAdapter, untuk 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 metode Update, DbDataAdapter 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 UPDATEs). 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 objek SqlCommandBuilder atau OleDbCommandBuilder untuk secara otomatis menghasilkan pernyataan SQL untuk pembaruan tabel tunggal jika Anda mengatur properti SelectCommand
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:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Peristiwa OnRowUpdating dimunculkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, hasil pertama yang dikembalikan ditempatkan di DataRow.Jika ada parameter output, parameter tersebut ditempatkan di DataRow.
Peristiwa OnRowUpdated dimunculkan.
AcceptChanges dipanggil.
Setiap perintah yang terkait dengan DbDataAdapter biasanya memiliki koleksi parameter yang terkait dengannya. Parameter dipetakan ke baris saat ini melalui properti SourceColumn
dan SourceVersion
dari kelas Parameter
penyedia data .NET Framework.
SourceColumn
mengacu pada kolom DataTable 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
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
dari kelas Parameter
penyedia data .NET Framework menentukan apakah akan menggunakan versi Asli, Saat Ini, atau Yang Diusulkan dari nilai kolom. Kemampuan ini sering digunakan untuk menyertakan nilai asli dalam klausul WHERE dari pernyataan UPDATE untuk memeriksa pelanggaran konkurensi optimis.
Nota
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.
Lihat juga
-
Memanipulasi Data (ADO.NET) - DbProviderFactories (ADO.NET)
- Gambaran Umum
ADO.NET