Call multiple SQL Server stored procedures in a transaction

后端 未结 3 995
太阳男子
太阳男子 2020-12-31 08:23

For usage in my current project I\'ve created a class that allows me to call SQL Server async.

My code looks like this:

internal class CommandAndCall         


        
3条回答
  •  耶瑟儿~
    2020-12-31 08:56

      string cnnString =WebConfigurationManager.ConnectionStrings["MyString"].ConnectionString;
        SqlConnection cnn = new SqlConnection(cnnString);
        SqlTransaction transaction;
    
        cnn.Open();
        transaction = cnn.BeginTransaction();
    
        try
        {
    
            // Command Objects for the transaction
            SqlCommand cmd1 = new SqlCommand("sproc1", cnn);
            SqlCommand cmd2 = new SqlCommand("sproc2", cnn);
    
            cmd1.CommandType = CommandType.StoredProcedure;
            cmd2.CommandType = CommandType.StoredProcedure;
    
            cmd1.Parameters.Add(new SqlParameter("@Param1", SqlDbType.NVarChar, 50));
            cmd1.Parameters["@Param1"].Value = paramValue1;
    
            cmd1.Parameters.Add(new SqlParameter("@Param2", SqlDbType.NVarChar, 50));
            cmd1.Parameters["@Param2"].Value = paramValue2;
    
            cmd2.Parameters.Add(new SqlParameter("@Param3", SqlDbType.NVarChar, 50));
            cmd2.Parameters["@Param3"].Value = paramValue3;
    
            cmd2.Parameters.Add(new SqlParameter("@Param4", SqlDbType.NVarChar, 50));
            cmd2.Parameters["@Param4"].Value = paramValue4;
    
            cmd1.ExecuteNonQuery();
            cmd2.ExecuteNonQuery();
    
            transaction.Commit();
        }
    
        catch (SqlException sqlEx)
        {
            transaction.Rollback();
        }
    
        finally
        {
            cnn.Close();
            cnn.Dispose();
        }
    

提交回复
热议问题