为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥9229398 2018-12-07 05:16:29
///<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; }
查看完整描述

5 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

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

查看完整回答
反对 回复 2019-01-21
?
慕村9548890

TA贡献1884条经验 获得超4个赞

有问题,如果

conn.Open();出错时,会执行
 tran.Rollback();但是此时tran还没有初始化是null.
查看完整回答
反对 回复 2019-01-21
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

谢谢提醒

查看完整回答
反对 回复 2019-01-21
?
撒科打诨

TA贡献1934条经验 获得超2个赞

 ///<summary>
///.net万能事务
///</summary>

看到这句,我笑了。哈哈。
查看完整回答
反对 回复 2019-01-21
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

客官见笑了

查看完整回答
反对 回复 2019-01-21
  • 5 回答
  • 0 关注
  • 396 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信