谁帮忙看下这个net事务有木有什么问题

 ///<summary>
///.net万能事务
///</summary>
///<param name="cmdtext1">第一个存储过程或者sql语句;</param>
///<param name="cmdtext2">第二个存储过程或者sql语句;</param>
///<param name="para1">第一个存储过程或者sql的参数</param>
///<param name="para2">第二个存储过程或者sql的参数</param>
///<param name="ct1">第一个参数的类型(存储过程或者sql)</param>
///<param name="ct2">第二个参数的类型(存储过程或者sql)</param>
public static int procAffairs(string cmdtext1, string cmdtext2, SqlParameter[] para1, SqlParameter[] para2, CommandType ct1,CommandType ct2)
{
using (SqlConnection conn = GetConnection())
{
SqlTransaction tran;
//SqlCommand cmd;
SqlCommand cmd = new SqlCommand();
try
{
conn.Open();
tran = conn.BeginTransaction();
cmd.Transaction = tran;
cmd.Connection = conn;

//cmd = new SqlCommand(cmdtext1, conn);
cmd.CommandText = cmdtext1;
cmd.CommandType = ct1;
cmd.Parameters.AddRange(para1);
cmd.ExecuteNonQuery();

//cmd = new SqlCommand(cmdtext2, conn);
cmd.CommandText = cmdtext2;
cmd.CommandType = ct2;
cmd.Parameters.AddRange(para2);
cmd.ExecuteNonQuery();
cmd = new SqlCommand();

tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
return 0;
}
}
return 1;
}
慕哥9229398
浏览 397回答 5
5回答

翻过高山走不出你

事务倒没有什么问题,倒是你的conn在出异常和结束都没有关闭吧。(唯一可能有问题的是同一个cmd 一个事务 却分两次执行两个不同的CommandText ,这个测试一下没问题就应该没问题了)

慕村9548890

有问题,如果 conn.Open();出错时,会执行 tran.Rollback();但是此时tran还没有初始化是null.

牛魔王的故事

谢谢提醒

撒科打诨

///<summary> ///.net万能事务 ///</summary>看到这句,我笑了。哈哈。

慕丝7291255

客官见笑了
打开App,查看更多内容
随时随地看视频慕课网APP