代码之家  ›  专栏  ›  技术社区  ›  Kiran Shahi Jonny

如何维护从C代码执行两个存储过程的事务处理

  •  1
  • Kiran Shahi Jonny  · 技术社区  · 8 年前

    我在我的类中有一个方法,它执行两个存储过程并将数据插入三个表中。在这种情况下,如何处理交易?

    例如:

    public class InsertClass
    {
       public void AddData()
       {
           try
           {
               Execute Sp1;
               Execute Sp2;
           }
           catch (Exception ex)
           {
               throw ex;
           }
       }
    }
    

    两个SP均用于插入。

    2 回复  |  直到 8 年前
        1
  •  4
  •   Kiran Shahi Jonny    8 年前

    试试这个:

    SqlConnection con = new SqlConnection(conString);
    SqlCommand cmd1,cmd2;
    con.Open();
    cmd1 = new SqlCommand("sp1",con);
    cmd2 = new SqlCommand("sp2",con);
    SqlTransaction trans = con.BeginTransaction();
    cmd1.Transaction = trans;
    cmd2.Transaction = trans;
    try
    {
        cmd1.ExecuteNonQuery();
        cmd2.ExecuteNonQuery();
        trans.Commit();
    }
    catch (Exception)
    {
        trans.Rollback();
    }
    
        2
  •  -1
  •   Kaval Patel    8 年前

    请尝试以下代码:

    connection.Open();
    SqlTransaction transaction = connection.BeginTransaction();
    
    try
           {
               Execute Sp1;
               Execute Sp2;
           }
           catch (Exception)
           {
               transaction.Rollback();
               connection.Close();
           }
    
           transaction.Commit();