SqlConnection conn = DbopUtil.GetConn();
                    SqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.Transaction = tran;
 try
{
....sql语句
 tran.commit();

catch
{
tran.Rollback();
conn.close();
throw;
}然后再下面
try
{
conn.open();
....sql语句
 tran.commit();
}
catch
{
tran.Rollback();
conn.close();
throw;
}
下面这个有没有用的?

解决方案 »

  1.   

    conn.close()写错地方了,没写finally里,不过不要紧,重要就是问同一个事务能不能再用。。
      

  2.   

    那我要执行两个,要重新定义一个事务就应该可以了吧比如SqlConnection conn = DbopUtil.GetConn();
      SqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
      SqlCommand cmd = new SqlCommand();
      cmd.Connection = conn;
      cmd.Transaction = tran;
     try
    {
    ....sql语句
     tran.commit();

    catch
    {
    tran.Rollback();
    throw;
    }
    finally
    {
    conn.close();
    }然后再下面
    conn.open();
    SqlTransaction tran1 = conn.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted);
    cmd.Transaction = tran1;
    try
    {
    conn.open();
    ....sql语句
     tran.commit();
    }
    catch
    {
    tran1.Rollback();
    throw;
    }
    finally
    {
    conn.close();
    }
      

  3.   

    你的两个语句都执行完,才能commit;
      

  4.   


    恩,这我知道,但是我现在就是有一个要做一个程序,这个页面,本地订单下单的有3句SQL语句同时执行,然后下面有个退款的4句SQL语句同时执行,这样就是要定义两个事务了吧,上面的提交了就提交,不能重复使用吗?