当我从我的客户端应用程序调用 sql 存储过程时,是否可以引发 DBCurrencyException

本文关键字:是否 DBCurrencyException 存储过程 我的 客户端 应用程序 sql 调用 | 更新日期: 2023-09-27 18:36:02

我有一个任务(我是学生)。我需要调用 DBCurrencyException。当我从更改数据库数据的客户端应用程序调用 sql 存储过程时,是否可以引发 DBCurrencyException?可能吗?

当我从我的客户端应用程序调用 sql 存储过程时,是否可以引发 DBCurrencyException

默认情况下,ADO.Net 数据集使用乐观并发。如果在数据库中不再存在行时尝试将行更新到数据库,则结果是错误:并发冲突:UpdateCommand 影响了预期的 1 条记录中的 0 条。

以下是可能发生该错误的场景。

// data row has been added 
DataRow dr= null;
dtTab = (DataTable)Session("dtTab");
dr = dtTab.Rows(e.RowIndex);
dr.Delete();
dtTab.AcceptChanges();

// If Acceptchanges() being not called, row status will be 
//detached, that will not be updated to database.
//Without updating database Acceptchanges() called.Row status 
//changed to deleted. If this update to database, 
// it will give concurrency error-   
// because row no longer exist in database. 

错误的原因变得显而易见。表中行中的记录在数据库中不存在。但是,删除命令试图将它们从数据库中删除。当数据适配器类尝试删除记录并且看不到任何正在更改的行时,它假定发生了并发冲突。

这是关于这个问题的条目(上述代码的来源)。本文介绍 当 DBConcurrencyException 将引发以及如何解决 问题。请通过关节。

请尝试与商店程序相同的事情,希望这会对您有所帮助。