加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

在ASP.NET 2.0中操作数据之六十一:在事务里对数据库修改进行封

发布时间:2016-11-24 08:22:27 所属栏目:MsSql教程 来源:站长网
导读:导言: 正如我们在第16章《概述插入、更新和删除数据》里探讨的那样,GridView控件内建的功能支持对每行数据的编辑和删除功能,你只需要稍稍动一下鼠标就可以创建丰富的数据修改界面而不用写一行代码.但是,在某些情况下,这还不够,我们需要让用户能够成

  第二个事件处理器对products的CategoryID属性重新赋值,并调用BLL层里的新的事务方法来执行数据库更新.我们注意到将每个产品的ProductID值赋给其CategoryID属性,对最开头的几个产品而言没有任何问题,但随着ProductID值越变越大,CategoryID的值也越变越大,而Category表里定义的种类毕竟有限,于是问题就出来了。

  第三个事件处理器也是将ProductID值赋给CategoryID属性,只是用ProductsTableAdapter的默认的Update方法来更新数据库. 该Update方法并没有使用事务来封装这些命令,所以只要是没有违背外键约束的更新都会执行成功.

  在浏览器里登录该页面进行验证.最开始你将看到如图8所示的画面,然后点“Modify Categories (WITH TRANSACTION)”.这将导致页面回传并试题更新所有products的CategoryID值,这将导致违背外键约束(见图9).

/uploads/allimg/c161121/14OI95021O40-4Y3Y.gif
图8:Products将显示在一个分页的GridView控件里

/uploads/allimg/c161121/14OI950244D0-492W6.gif
图9:导致违背外键约束

  现在点击浏览器的Back按钮,再点击“Refresh Grid”按钮,此时你看到的界面和图8的界面一摸一样。这是因为发生了违背外键约束,导致回滚,所有的操作失败.

  再点“Modify Categories (WITHOUT TRANSACTION)”按钮,这同样将违背外键约束(见图9),不过这一次,那些对CategoryID属性赋以有效值的操作不会回滚.点击浏览器的Back按钮,再点“Refresh Grid”按钮。就像图10显示的那样,最开始的8个产品的CategoryID值已经发生了更改,比如,在图8里Chang的CategoryID值为1,而在图10里就变成了2了.

/uploads/allimg/c161121/14OI9502H620-5053C.gif
图10:某些Product的CategoryID值发生了改变,而其它的没有

结语:

  默认情况下,TableAdapter的方法没有使用事务来执行数据库命令,不过只需多做一点工作我们就可以添加一些用于创建、提交、回滚事务的方法.在本教程,我们在ProductsTableAdapter class类里创建了这3个方法:BeginTransaction, CommitTransaction,和RollbackTransaction.我们考察了如何在try...catch模块里使用这些方法来执行一系列的修改命令.具体来说,我们在ProductsTableAdapter里创建了UpdateWithTransaction方法,该方法运用Batch Update模式对ProductsDataTable里的每行记录执行必要的更改操作;我们也对BLL里的ProductsBLL class类添加了DeleteProductsWithTransaction方法,它将一系列ProductID值作为输入参数,并使用DB-Direct模式将每个产品删除.这些方法开始都创建一个事务,再在try...catch模块里执行数据更改命令.如果抛出异常,则回滚事务,否则提交事务.

  第五步演示了事务的作用。在接下来的3章我们将以本章为基础,创建批更新、批删除、批添加的用户界面.

  祝编程快乐!

作者简介

  本系列教程作者 Scott Mitchell,著有六本ASP/ASP.NET方面的书,是4GuysFromRolla.com的创始人,自1998年以来一直应用 微软Web技术。大家可以点击查看全部教程《[翻译]Scott Mitchell 的ASP.NET 2.0数据教程》,希望对大家的学习ASP.NET有所帮助。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读