事务内执行多次相同的Proc

string strcon = "server=192.168.161.170;database=OpPermissionManagement1;uid=sa;pwd=itdddd";
            string[,] ss = { { "sydy01", "zr", "123", "u10" },  {"sydy02", "zr", "123", "u10" }, { "sydy03", "zr", "123", "u10" }, { "sydy01", "zr", "123", "u10" } };

                //SP_Ma_PassWord_Insert
                using (SqlConnection con = new SqlConnection(strcon))
                {
                    con.Open();
                    SqlTransaction tran = con.BeginTransaction(IsolationLevel.ReadUncommitted);
                    SqlCommand cmd = new SqlCommand("SP_Ma_PassWord_Insert", con, tran);
                    cmd.CommandType = CommandType.StoredProcedure;
                    //cmd.Transaction = tran;
                    cmd.Parameters.Add("@SyOpID", SqlDbType.NVarChar, 16);
                    cmd.Parameters.Add("@OpName", SqlDbType.NVarChar, 20);
                    cmd.Parameters.Add("@SohoPW", SqlDbType.NVarChar, 50);
                    cmd.Parameters.Add("@Unit", SqlDbType.NVarChar, 50);
                    //cmd.ExecuteNonQuery();

                    for (int i = 0; i < 4; i++)
                    {
                        try
                        {
                            if (i == 2)
                            {
                                throw new Exception();
                            }
                            cmd.Parameters[0].Value = ss[i, 0];
                            cmd.Parameters[1].Value = ss[i, 1];
                            cmd.Parameters[2].Value = ss[i, 2];
                            cmd.Parameters[3].Value = ss[i, 3];
                            cmd.ExecuteNonQuery();

                        }
                        catch
                        {
                            tran.Rollback();
                            con.Close();
                            Console.WriteLine("err");
                            return ;
                        }
                    }
                    tran.Commit();
                    Console.WriteLine("ok");
            }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值