PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pengecualian DBConcurrency Terjadi Saat Memperbarui Menggunakan Dataadapter

Ini karena DataAdapter menggunakan Optimistic Concurrency secara default. Artinya, jika Anda mencoba memperbarui baris yang tidak lagi ada di database atau diubah, pembaruan dari DataAdapter akan gagal dengan pengecualian di atas.

Kemungkinan skenario :

  • Antara Anda memilih data ke klien dan mengirim pembaruan, pengguna lain menghapus atau memperbarui baris ini dari aplikasinya.
  • Bisa jadi Anda menghapus data dari tempat lain di aplikasi Anda.

Misalnya :

  1. Anda mengisi DataTable yang akan digunakan untuk pembaruan.
  2. Menghapus baris dengan Code = 1101 (misalnya) langsung dari database, yaitu Anda tidak menggunakan DataTable di sini. Ini meniru pengguna lain yang menghapus baris dengan Code = 1101 dari aplikasi lain. Atau bagian lain dalam kode Anda menghapus baris dengan Code = 1101 .
  3. Memilih baris dengan Code = 1101 dari DataTable , ini hanya untuk menunjukkan bahwa itu masih ada meskipun Anda telah menghapusnya dari database itu sendiri.
  4. Mengedit Quantity kolom di baris dengan Code = 1101 di DataTable . Ini harus dilakukan, jika tidak, panggilan ke Pembaruan akan mengabaikan baris ini saat memperbarui.
  5. Mengeksekusi pembaruan, ini akan memunculkan pengecualian karena Anda mencoba memperbarui baris yang (tidak lagi) ada di database.

Jika Anda ingin menerapkan Last Writer Wins , Tambahkan kode berikut:

cb.ConflictOption = ConflictOption.OverwriteChanges;

Juga ada satu hal lagi yang mungkin:jika Anda memiliki Decimal /numeric sebagai kolom di DB mereka dapat menyebabkan kesalahan ini meskipun datanya terlihat sama. Ini karena kesalahan pembulatan desimal.

Catatan penting :Anda harus selalu menggunakan parameterized queries omong-omong. Rangkaian string semacam ini terbuka untuk SQL Injection .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambah nilai di Postgres

  2. MigrationSchemaMissing(Tidak dapat membuat tabel django_migrations (%s) % exc)

  3. GROUP BY dan COUNT di PostgreSQL

  4. UUID Postgresql didukung oleh Hibernate?

  5. Impor dump SQL ke database PostgreSQL