快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

net中交易处理的解决方案

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

例如在进行银行转帐处理时,我们先从转出帐号减掉要转出的金额,然后再在接收的帐号上加上相应的金额。假如一切处理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





返回类别: 教程
上一教程: FlyTreeView for ASP.NET 3.1 破解手记
下一教程: C#语言初级入门(4)

您可以阅读与"net中交易处理的解决方案"相关的教程:
· 当你的Studio.NET出现"Automation Server Cannot Create Object"时,禁止添加页面及类文件时的解决方案~~
· VS.NET Beta2安装后添加/删除程序不能正常启动的问题的解决方案
· url传递中文的解决方案
· 开发合作 Microsoft .NET 解决方案
· .Net正式版中的一些Bug及其解决方案
    微笑服务 优质保证 索取样品