快速业务通道

ASP.NET 2.0数据教程之六十三:在事务里对数据库修改进行封装

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21

返回“ASP.NET 2.0数据教程目录”

导言:

正如我们在第16章《概述添加、更新、删除数据》里探讨的那 样,GridView控件内建的功能支持对每行数据的编辑和删除功能,你只需要稍稍 动一下鼠标就可以创建丰富的数据修改界面而不用写一行代码.但是,在某些情况 下,这还不够,我们需要让用户能够成批地处理数据.

比如,很多基于 web(web-based)的电子邮件客户端,将所有邮件出来,每条邮件除了包含邮件信 息(主题、发送者等)外,还包含一个checkbox控件。这些界面允许用户同时删除 多个邮件,用户只需要选中邮件,再点"删除所选邮件"按钮.当用户要 编辑多条不同的记录的时候,提供一个批编辑界面是比较理想的.我们用不着让用 户每次都选中一条要编辑的记录,再做相关的修改,最后点“更新” 按钮,在批编辑界面里每条记录都有各自的编辑选项,用户可以快速地编辑多条 记录再点“Update All”按钮来保存对他们所做的修改.本系列我们将 考察如何创建对数据进行添加、编辑、删除批处理的界面.

如果想对批处 理执行atomic operation(原子操作), 那么首先,所做的操作要么都执行成功要 么都失败,另外还要对数据访问层进行扩充以支持database transactions(数据 库事务)。数据库事务确保INSERT, UPDATE, 和 DELETE语句执行的atomicity(原 子数)置于数据库事务的保护之下.另外,绝大多数的当代数据库系统都支持数据 库事务.

在本系列我们先看如何扩充数据访问层以支持数据库事务,接下 来我们看如何创建页面以包含添加、更新、删除数据的批处理界面,让我们开始 吧.

注意:在批处理事务里修改数据时,原子数(atomicity)并非总数必要 的。在批处理的某些情况下,某些修改成功某些修改失败是可以接受的。比如删 除电子邮件时,有些邮件在删除过程中发生了数据库错误,有些邮件没有发生错 误,对这种没有发生错误的邮件,批处理照样将其删除掉.对这种情况,我们没有 必要设置数据访问层DAL支持数据库事务.不过在其它某些情况下,原子数是至关 重要的.比如某个客户想把资金从一个银行帐户转移到另一个银行帐号,下面2个 操作必须执行成功:首先,将第一个帐号的资金扣除,然后将资金转入第二个帐 号.如果第一步执行成功,第二步执行失败,银行当然高兴,客户怕是要发疯了. 在后面的文章里我们将创建添加、更新、删除的批处理界面,就算你不打算在这 些页面里使用数据库事务,我也希望你照着本篇文章,对数据访问层进行扩展一 支持数据库事务.

事务概述

绝大多数的数据库都支持事务,它可以 将多个数据库命令当成一个逻辑单位进行处理.这些包含事务的命令要么都执行成 功要么都执行失败.

一般来说,事务通过SQL命令来执行,使用如下的模式 :

1.声明事务开始

2.执行构成事务的那些SQL命令

3.如果 在第二步中的任何一个命令出错,执行事务回滚(rollback the transaction)

4.如果在第二步中的所有命令成功执行,提交事务

这些SQL命令可 以通过手写的方式输入,比如写SQL脚本、创建存储过程、也可以通过编程的方式 来构建,比如使用ADO.NET技术或调用System.Transactions namespace命名空间 的类.在本文,我们仅仅考察用ADO.NET技术管理事务.在后面的教程我们看如何在 数据访问层Data Access Layer里使用存储过程,到那时,我们再来考察这些创建 、回滚、提交事物的SQL命令。另外,要获得更多信息请参考文章《Managing Transactions in SQL Server Stored Procedures》 (http://www.4guysfromrolla.com/webtech/080305-1.shtml)

注意: System.Transactions namespace命名空间的TransactionScope class类允许开发 者通过编程的方式获取事务里的一系列命令,且允许事务包含多个数据源,甚至 类型不同,比

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号