当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .net中交易处理的解决方案

ASP.NET
为T-SQL添加intellisense功能
SQL Server 2005安装过程中出现错误的解决办法
SQL Server 2005 RTM 安装错误 :The SQL Server System Configuration Checker cannot be executed due to
有关于JSON的一些资料
不能忽略c#中的using和as操作符的用处
JavaScript系列之―同步还是异步?
获取远程网页的内容之一(downmoon原创)
获取远程网页的内容之二(downmoon原创)
ASP.Net中防止刷新自动触发事件的解决方案
asp.net下用js实现鼠标移至小图,自动显示相应大图
Asp.Net 和 AJAX.Net 的区别
提交页面的定位--scrollIntoView的用法
利用AJAX与数据岛实现无刷新绑定
asp.net下判断用户什么时候离开,以什么方式离开
DataSet 添加数据集、行、列、主键和外键等操作示例
读写xml所有节点个人小结 和 读取xml节点的数据总结
收藏的asp.net文件上传类源码
asp.net下GDI+的一些常用应用(水印,文字,圆角处理)技巧
一个可以让.net程序在非WIN平台上运行的软件Mono
使用ASP.NET 2.0 CSS 控件适配器生成CSS友好的HTML输出

ASP.NET 中的 .net中交易处理的解决方案


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 183 ::
收藏到网摘: n/a


在数据库软件中,其核心就是对数据库记录进行查询添加修改及删除操作,这是非常关键的也是必须非常谨慎的去完成。在现有的程序中经常会有因为某些错误而造成数据丢失甚至是系统崩溃,这就对我们的程序提出了一个数据操作的错误处理要求。
例如在进行银行转帐处理时,我们先从转出帐号减掉要转出的金额,然后再在接收的帐号上加上相应的金额。如果一切处理OK,我们的钱能顺利到达接收帐号。但要是系统在执行接收金额的步骤上出错了,那么不但自已钱变少了,该收到的人也没有收到,那笔钱就这样消失了.这是一个很危险的现像。解决办法就是要对数据操作的每一步都进行错误监控,一旦发现出错了,马上恢复数据至整个操作前的原始状态。.NET中提出了一个交易(Transaction)的观念,可以解决此类问题。
我现在来用交易实现上面的例子:
string sql1 = "..."; //在转出帐号上减去金额的处理SQL语句
string sql2 = "..."; //在接收帐号上加上金额的处理SQL语句
SqlConnection conn = new SqlConnection("..."); //建立数据库连接
conn.Open(); //接开数据库连接
SqlTransaction tran = conn.BeginTransaction(); //开始进行交易处理
SqlCommand comm = new SqlCommand();
comm.Connection = conn;
comm.Transaction = tran;
try
{
comm.CommandText = sql1;
comm.ExecuteNonQuery();
comm.CommandText = sql2;
comm.ExecuteNonQuery();
tran.Commit(); //接受交易,完成操作
}catch
{
tran.Rollback(); //交易失败,恢复数据

}
finally
{
conn.Close(); //关闭数据库连接。
}
其实还有另外一种方法也可以实现以上目标。在transaction-sql中也提供了交易处理的方法(我想上种方法最终实现还是转换为此方法实现的).我们可以把以上处理建立为一个存储过程,然后再用SqlCommand进行调用,这个存储过程的主要的相关内容为(其中...处代表要进行数据库记录操作的多条SQL语句):
BEGIN TRANSACTION
...
IF (@@ERROR > 0) ROLLBACK TRANSACTION
ELSE COMMIT TRANSACTION
谨记: 在对重要资料进行操作时一定要进行交易处理,不然丢掉资掉了就后悔莫急了。