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

net事物提交的问题 大侠们过来看看 急??

net事物提交的问题 大侠们过来看看 急??

烙印99 2018-12-06 13:41:07
for (int i = 0; i < Parameter.Count; i++) { flag[i] = Commit.Commit.executeTransaction(sql[i], (SqlParameter[])Parameter[i]); } public static bool executeTransaction(string strSql, SqlParameter[] values) { bool flag = false; SqlCommand cmd = new SqlCommand(); cmd.Connection = _con;//命令对象 SqlTransaction myTransaction;//声明一个SQL事物类型 myTransaction = con.BeginTransaction();//基于一个连接初始化事物 try { cmd.Transaction = myTransaction;//指定SQL命令语句 的事物 cmd.CommandText = strSql;//给定命令语句 if (values!= null) { foreach (SqlParameter parameter in values) { if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&(parameter.Value == null)) { parameter.Value = DBNull.Value; } cmd.Parameters.Add(parameter); } cmd.ExecuteNonQuery();//执行SQL语句 } flag = true; } catch (Exception ex) { flag = false; throw ex; } finally { _con.Close(); } return flag; } 我先得到所有的sql语句执行的true 和false 当全部是true的时候提交 代码: Commit.Commit.executeTransaction(flag); 我这样写代码行吗? public static bool executeTransaction(bool[] flag) { int i = 0; bool sp = false; SqlCommand cmd = new SqlCommand(); cmd.Connection = _con;//命令对象 SqlTransaction myTransaction;//声明一个SQL事物类型 myTransaction = con.BeginTransaction();//基于一个连接初始化事物 try { foreach (bool item in flag) { if (item == true) { i++; } else { i--; } } if (i == 4) { sp = true; myTransaction.Commit(); } else { myTransaction.Rollback(); } } catch (Exception ex) { sp = false; throw ex; } finally { _con.Close(); } return sp; } 我只要flag里面全部是 true就提交 不要执行什么语句?但是当全部是true的时候我看数据库没有数据?
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

Transaction 得放到

for (int i = 0; i < Parameter.Count; i++)
            {
                flag[i]
= Commit.Commit.executeTransaction(sql[i], (SqlParameter[])Parameter[i]);
            }

之外,也就是说你所有执行查询的语句要使用同一个 Transaction 对象。

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

添加回答

举报

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