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

 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的时候我看数据库没有数据?
烙印99
浏览 363回答 1
1回答

翻阅古今

Transaction 得放到 for (int i = 0; i < Parameter.Count; i++)            {                flag[i] = Commit.Commit.executeTransaction(sql[i], (SqlParameter[])Parameter[i]);            } 之外,也就是说你所有执行查询的语句要使用同一个 Transaction 对象。
打开App,查看更多内容
随时随地看视频慕课网APP