首页新闻找找看学习计划

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

0
悬赏园豆:10 [已解决问题] 解决于 2011-10-09 15:34
 ///<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;
}
问题补充:
 public static int procAffairs(string cmdtext1, string cmdtext2, SqlParameter[] para1, SqlParameter[] para2, CommandType ct1,CommandType ct2)
{
using (SqlConnection conn = GetConnection())
{
SqlTransaction tran;
SqlCommand cmd = new SqlCommand();
try
{
conn.Open();
tran = conn.BeginTransaction();
cmd.Transaction = tran;
cmd.Connection = conn;

cmd.CommandText = cmdtext1;
cmd.CommandType = ct1;
cmd.Parameters.AddRange(para1);
cmd.ExecuteNonQuery();

cmd.params.clear();

cmd.CommandText = cmdtext2;
cmd.CommandType = ct2;
cmd.Parameters.AddRange(para2);
cmd.ExecuteNonQuery();

tran.Commit();
}
catch (Exception ex)
{
tran.Rollback();
return 0;
}
}
return 1;
}
应该这样

Jeff Gao的主页 Jeff Gao | 菜鸟二级 | 园豆:271
提问于:2011-09-28 17:08
< >
分享
最佳答案
1

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

收获园豆:5
小城岁月 | 菜鸟二级 |园豆:260 | 2011-09-28 22:26

恩 谢谢提醒

Jeff Gao | 园豆:271 (菜鸟二级) | 2011-09-28 22:32
其他回答(2)
0

有问题,如果

conn.Open();出错时,会执行
 tran.Rollback();但是此时tran还没有初始化是null.
收获园豆:5
Jotin | 园豆:160 (初学一级) | 2011-09-28 23:29

谢谢提醒

支持(0) 反对(0) Jeff Gao | 园豆:271 (菜鸟二级) | 2011-09-29 13:32
0
 ///<summary>
///.net万能事务
///</summary>

看到这句,我笑了。哈哈。
waninlezu | 园豆:661 (小虾三级) | 2011-09-29 13:27

客官见笑了

支持(0) 反对(0) Jeff Gao | 园豆:271 (菜鸟二级) | 2011-09-29 13:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册