DBConnection conn = new .....;
DbCommand comm1 = new ......;
DbCommand comm2 = new ......;
DBTransaction tran;conn.Open();
comm1.Connection = conn;
comm2.Connection = conn;tran = conn.BeginTransaction();
try
{
     ...
     comm1.Execute...();
     ...
     comm2.Execute...();
     ...
     tran.Commit();
     Messagebox("feel lucky :)");
}
catch(...)
{
     tran.Rollback();
     Messagebox("Shit! :(");
}
finally
{
     conn.Close();
}

解决方案 »

  1.   

    关于存钱取钱的事物,这是页面端的,也可以写个Sql的存储过程    public void Transfer_ADO(string inCard, string outCard, decimal money)
        {
    SqlCommand cmd = new SqlCommand();
    cmd.Connection = new SqlConnection(this.conString);
    cmd.CommandType = CommandType.Text;
    //
    try
    {
        cmd.Connection.Open();
                cmd.Transaction = cmd.Connection.BeginTransaction();
                cmd.CommandText = "insert into RecordsInfo (CardId , Type , [Money]) values ('" + inCard + "' , '存入' , " + money + ")";
        cmd.ExecuteNonQuery();
        //
        cmd.CommandText = "insert into RecordsInfo (CardId , Type , [Money]) values ('" + outCard + "' , '支出' , " + money + ")";
        cmd.ExecuteNonQuery();
                //
        cmd.CommandText = "Update cardInfo set Balance = Balance + " + money + " where [Id] = '" + inCard + "'";
        cmd.ExecuteNonQuery();
                //
        cmd.CommandText = "Update cardInfo set Balance = Balance - " + money + " where [Id] = '" + outCard + "'"; ;
        cmd.ExecuteNonQuery();
                //
        cmd.Transaction.Commit();
    }
    catch
    {
                cmd.Transaction.Rollback();
        throw;
    }
    finally
    {
                cmd.Connection.Close();
    }
    }
      

  2.   

    需要注意的是: 使用事务要导入System.EnterpriseServices 命名空间,并在aspx页面的@page指令中添加 Transaction="";  //可以是Supported,Required,RequriesNew