使用mysql在C#中出现问题时,我的事务不会回滚吗?

我使用mysql connector6.2.3.0(.net)从C#连接mysql 5.1。我想一次插入3个表。所以,我正在使用事务处理。假设,当插入数据时遇到一些错误第3个表,然后事务不回滚。数据插入前两个表。

这是我的代码……

MySqlDataAdapter da = new MySqlDataAdapter(); DBUtil cUtil = new DBUtil(); MySqlConnection mysqlCon=null; MySqlTransaction txn = null; try { mysqlCon = cUtil.getDbConnection(); txn = mysqlCon.BeginTransaction(); //1 sql = "insert into test_details()"; da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn); da.InsertCommand.ExecuteNonQuery(); //2 sql = "insert into task_details()"; da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn); da.InsertCommand.ExecuteNonQuery(); sql = "select task_id from task_details where test_id='" + testId + "'"; da.SelectCommand = new MySqlCommand(sql, mysqlCon,txn); dt1 = new System.Data.DataTable(); da.Fill(dt1); string task_id = dt1.Rows[0]["task_id"].ToString(); //3 sql = "insert into test_evaluators()"; da.InsertCommand = new MySqlCommand(sql, mysqlCon,txn); da.InsertCommand.ExecuteNonQuery(); txn.Commit(); mysqlCon.Close(); da.Dispose(); } catch (Exception e) { txn.Rollback(); mysqlCon.Close(); } 

我想,最初,我想禁用自动提交…但我不知道我必须设置这个…

请告诉我这有什么问题……

正如我们发现它是数据库引擎问题,你可以使用

 ALTER TABLE tablename ENGINE = innodb 

参考文档