Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bug du .NET ? DBConcurrencyException lors de l'appel de la méthode DbDataAdpter.Update()

2 réponses
Avatar
Gilles TOURREAU
Je suis sous SQL 2005.

J'ai un DataTable que je rempli à l'aide d'un DataAdapter et d'un
CommandBuilder.
Une fois rempli, je supprime une ligne d'une table à l'aide la méthode
.Delete() cela permet de répercuter les modification au prochain appel de
Adapter.Update();

Lorsque j'appel cette méthode, j'ai une exception qui se déclenche
"DBConncurrencyException : Concurrency violation: the DeleteCommand affected
0 of the expected 1 records."

Cette exception est déclenché car la commande Delete généré par
CommandBuilder à effacé aucune ligne.
J'ai donc regardé avec le Profiler de SQL 2005 la commande qui était
executée :

exec sp_executesql N'DELETE FROM ......................

J'ai fais un copier/coller de cette commande vers SQL Server Management
Studio, je l'execute, et là, SQL 2005 me dit qu'une ligne vient d'être
effacé (1 row affected(s)) !!!
D'où vient cette erreur ? Serait-ce un bug au niveau de .NET ?

En vous remerciant par avances de vos lumières...

--
Gilles TOURREAU
Responsable Informatique
gilles.tourreau@pos.fr

Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr

2 réponses

Avatar
SM
Avant d'appeler la methode Delete() est ce que vous avez verifié que le
record existe bien dans le BD ? pour les records insérés mais non encore
commités il faut appeler plutot la methode Remove().


"Gilles TOURREAU" wrote in message
news:%
Je suis sous SQL 2005.

J'ai un DataTable que je rempli à l'aide d'un DataAdapter et d'un
CommandBuilder.
Une fois rempli, je supprime une ligne d'une table à l'aide la méthode
.Delete() cela permet de répercuter les modification au prochain appel de
Adapter.Update();

Lorsque j'appel cette méthode, j'ai une exception qui se déclenche
"DBConncurrencyException : Concurrency violation: the DeleteCommand


affected
0 of the expected 1 records."

Cette exception est déclenché car la commande Delete généré par
CommandBuilder à effacé aucune ligne.
J'ai donc regardé avec le Profiler de SQL 2005 la commande qui était
executée :

exec sp_executesql N'DELETE FROM ......................

J'ai fais un copier/coller de cette commande vers SQL Server Management
Studio, je l'execute, et là, SQL 2005 me dit qu'une ligne vient d'être
effacé (1 row affected(s)) !!!
D'où vient cette erreur ? Serait-ce un bug au niveau de .NET ?

En vous remerciant par avances de vos lumières...

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr




Avatar
Gilles TOURREAU
Oui, l'enregistrement existe bien avant et après mon Delete() dans ma base
de données SQL Server.

Cordialement

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
"SM" a écrit dans le message de news:

Avant d'appeler la methode Delete() est ce que vous avez verifié que le
record existe bien dans le BD ? pour les records insérés mais non encore
commités il faut appeler plutot la methode Remove().


"Gilles TOURREAU" wrote in message
news:%
Je suis sous SQL 2005.

J'ai un DataTable que je rempli à l'aide d'un DataAdapter et d'un
CommandBuilder.
Une fois rempli, je supprime une ligne d'une table à l'aide la méthode
.Delete() cela permet de répercuter les modification au prochain appel de
Adapter.Update();

Lorsque j'appel cette méthode, j'ai une exception qui se déclenche
"DBConncurrencyException : Concurrency violation: the DeleteCommand


affected
0 of the expected 1 records."

Cette exception est déclenché car la commande Delete généré par
CommandBuilder à effacé aucune ligne.
J'ai donc regardé avec le Profiler de SQL 2005 la commande qui était
executée :

exec sp_executesql N'DELETE FROM ......................

J'ai fais un copier/coller de cette commande vers SQL Server Management
Studio, je l'execute, et là, SQL 2005 me dit qu'une ligne vient d'être
effacé (1 row affected(s)) !!!
D'où vient cette erreur ? Serait-ce un bug au niveau de .NET ?

En vous remerciant par avances de vos lumières...

--
Gilles TOURREAU
Responsable Informatique


Société P.O.S
Spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr