模拟事务

模拟事务
-------------------------------


或者找下关于这个类的资料看看:
<%@ Import Namespace="System.EnterpriseServices" %>
----------
<%@ Page Language="C#" Transaction="RequiresNew" %>
<%@ Import Namespace="System.EnterpriseServices" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat=server>
void Page_Load(Object sender , EventArgs e)
{
 SqlConnection conBank;
 string  strUpdateAccountA;
 string  strUpdateAccountB;
 SqlCommand cmdUpdateAccountA;
 SqlCommand cmdUpdateAccountB;

// Initialize objects
conBank = new SqlConnection(@"Server=localhost;Trusted_Connection=true;database=conBank" );

strUpdateAccountA = "Update AccountA set { Balance = Balance - 999.99 WHERE Customer=//Smith//";
cmdUpdateAccountA = new SqlCommand( strUpdateAccountA, conBank );

strUpdateAccountB = "Update AccountB set { Balance = Balance + 999.99 WHERE Customer=//Smith//";
cmdUpdateAccountB = new SqlCommand( strUpdateAccountB, conBank );

// Open connection
conBank.Open();

// try executing both commands
try
{
  cmdUpdateAccountA.ExecuteNonQuery();
  cmdUpdateAccountB.ExecuteNonQuery();

  // Commit the transaction
  ContextUtil.SetComplete();
  Response.Write( "Transaction Successful!" );
}
catch (Exception eX)
{
  ContextUtil.SetAbort();
  Response.Write( "Transaction Failed!" );
}

finally
{
  conBank.Close();
}
}

</script>

--

// 这个我自己写的

public void RunSqlTransaction(string myConnString,string sql1,string sql2)
 {
    SqlConnection myConnection = new SqlConnection(myConnString);
    myConnection.Open();

    SqlCommand myCommand = myConnection.CreateCommand();
    SqlTransaction myTrans;

    // 开始事务
    myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
    myCommand.Connection = myConnection;
    myCommand.Transaction = myTrans;

    try
    {
      myCommand.CommandText = sql1;
      myCommand.ExecuteNonQuery();
      myCommand.CommandText = sql2;
      myCommand.ExecuteNonQuery();
      myTrans.Commit();// ok
     
    }
    catch(Exception e)
    {
      try
      {
        myTrans.Rollback("SampleTransaction");
      }
      catch (SqlException ex)
      {
        if (myTrans.Connection != null)
        {
          Response.Write("错误类型为" + ex.GetType() + ",在试图滚回事务时遇到.");
        }
      }
   
      Response.Write("错误类型为" + e.GetType() + ",在插入数据时遇到.");
      Response.Write("两个记录都未写进数据库.");
    }
    finally
    {
      myConnection.Close();
    }
}

posted on 2005-12-20 22:49 钛网络 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/eleccomm2000/archive/2005/12/20/301155.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值