List<string> sqlList= new List<string>();
                sqlList.Add("update pictures set re='testb' where infouuid='test'");
                sqlList.Add("update pictures set ref='testb' where infouuid='test0'");
                sqlList.Add("update pictures set re='testb' where infouuid='test2'");      
using (DbConnection connection = GetConnection())
            {
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();
                DbCommand cmd = connection.CreateCommand();
                cmd.Transaction = transaction;                foreach (string strSql in sqlList)
                {
                    if (!string.IsNullOrEmpty(strSql))
                    {
                        cmd.CommandText = strSql;
                        cmd.ExecuteNonQuery();
                    }
                }
                transaction.Commit();
            }代码如上:1,3语句正确,2语句有错误。 我希望3条更新语句要么全部执行成功,只要有一条出错就回滚。但实际是1执行成功了,到2出错后,并没有回滚。数据库用的MySql。

解决方案 »

  1.   

    加个try catch ,出错了就在catch里面 写rollback 语句
      

  2.   

    ISAM、MyISAM两种类型的表不支持事务
      

  3.   


     using (DbConnection connection = GetConnection())
                {
                    connection.Open();
                    DbTransaction transaction = connection.BeginTransaction();
                    DbCommand cmd = connection.CreateCommand();
                    cmd.Transaction = transaction;                try
                    {
                        foreach (string strSql in sqlList)
                        {
                            if (!string.IsNullOrEmpty(strSql))
                            {
                                cmd.CommandText = strSql;
                                cmd.ExecuteNonQuery();
                            }
                        }
                        transaction.Commit();
                    }
                    catch
                    {
                        transaction.Rollback();
                    }
                }没有用。
      

  4.   

    问题解决。ISAM、MyISAM两种类型的表不支持事务。给分