sql >> Databasteknik >  >> RDS >> PostgreSQL

Undantag för DBConcurrency uppstod vid uppdatering med dataadapter

Detta beror på att DataAdapter använder Optimistic Concurrency som standard. Detta innebär att om du försöker uppdatera en rad som inte längre finns i databasen eller ändras, uppdateringen från DataAdapter kommer att misslyckas med undantaget ovan.

Möjliga scenarier :

  • Mellan det att du väljer data till klienten och skickar uppdateringen, tar en annan användare bort eller uppdaterar den här raden från sin applikation.
  • Det kan vara så att du tar bort data från någon annanstans i din applikation.

Till exempel :

  1. Du fyller i DataTable som kommer att användas för uppdateringen.
  2. Tar bort raden med Code = 1101 (till exempel) direkt från databasen, dvs du använder inte DataTable här. Detta emulerar en annan användare som tar bort raden med Code = 1101 från en annan applikation. Eller någon annan del av din kod som tar bort raden med Code = 1101 .
  3. Väljer ut raden med Code = 1101 från DataTable , detta är bara för att visa att det fortfarande finns kvar även om du har tagit bort det från själva databasen.
  4. Redigerar Quantity kolumn i raden med Code = 1101 i DataTable . Detta måste göras, annars kommer anropet till uppdatering att ignorera den här raden vid uppdatering.
  5. Kör uppdateringen, detta kommer att skapa undantaget eftersom du försöker uppdatera en rad som (inte längre) finns i databasen.

Om du vill implementera Last Writer Wins , Lägg till följande kod:

cb.ConflictOption = ConflictOption.OverwriteChanges;

Det finns också en annan möjlig sak:om du har Decimal /numeric som kolumner i databasen kan de orsaka detta fel även om data ser likadana ut. Detta beror på ett decimalavrundningsfel.

En viktig anmärkning :Du bör alltid använda parameterized queries förresten. Den här typen av strängsammansättningar är öppna för SQL Injection .




  1. Hur skapar jag en kommaseparerad lista med en SQL-fråga?

  2. Utvärdera när ett uttryck i en fråga utvärderas

  3. En djupgående titt på databasindexering

  4. Behöver hjälp med beräkning med två datamängder med Expression SSRS