c#

位置:IT落伍者 >> c# >> 浏览文章

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


发布日期:2018年12月02日
 
.net 中交易处理的解决方案

在数据库软件中其核心就是对数据库记录进行查询添加修改及删除操作这是非常关键的也是必须非常谨慎的去完成在现有的程序中经常会有因为某些错误而造成数据丢失甚至是系统崩溃这就对我们的程序提出了一个数据操作的错误处理要求

例如在进行银行转帐处理时我们先从转出帐号减掉要转出的金额然后再在接收的帐号上加上相应的金额如果一切处理OK我们的钱能顺利到达接收帐号但要是系统在执行接收金额的步骤上出错了那么不但自已钱变少了该收到的人也没有收到那笔钱就这样消失了这是一个很危险的现像解决办法就是要对数据操作的每一步都进行错误监控一旦发现出错了马上恢复数据至整个操作前的原始状态NET中提出了一个交易(Transaction)的观念可以解决此类问题

我现在来用交易实现上面的例子:

string sql = ;//在转出帐号上减去金额的处理SQL语句

string sql = ;//在接收帐号上加上金额的处理SQL语句

SqlConnection conn = new SqlConnection();//建立数据库连接

connOpen();//接开数据库连接

SqlTransaction tran = connBeginTransaction(); //开始进行交易处理

SqlCommand comm = new SqlCommand();

commConnection = conn;

commTransaction = tran;

try

{

commCommandText = sql;

commExecuteNonQuery();

commCommandText = sql;

commExecuteNonQuery();

tranCommit();//接受交易完成操作

}catch

{

tranRollback();//交易失败恢复数据

}

finally

{

connClose();//关闭数据库连接

}

其实还有另外一种方法也可以实现以上目标在transactionsql中也提供了交易处理的方法(我想上种方法最终实现还是转换为此方法实现的)我们可以把以上处理建立为一个存储过程然后再用SqlCommand进行调用这个存储过程的主要的相关内容为(其中处代表要进行数据库记录操作的多条SQL语句):

BEGIN TRANSACTION

IF (@@ERROR > ) ROLLBACK TRANSACTION

ELSE COMMIT TRANSACTION

上一篇:C#轻松解决世纪迷题:爱因斯坦算法

下一篇:Win8无法安装.Net 3.5怎么办?Win8下.Net 3.5怎么安装