0
我正在通過使用mysql connector6.2.3.0(.net)從C#連接mysql 5.1。我想一次插入3個表。因此,我使用的是transaction.Suppose,當插入數據時遇到一些錯誤進入我的第三張表,那麼事務不會回滾。數據被插入到前兩個表中。我的事務是不是回滾時,出現錯誤在C#與MySQL?
這是我的代碼...
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();
}
我認爲,首先,我要禁用自動提交...但我不知道我要設置這個...
請建議我這是怎麼回事錯這個......
你的Mysql數據庫有什麼格式? – 2013-02-21 06:00:26
@DavidGoshadze:對不起,格式意味着什麼? – Saravanan 2013-02-21 06:02:57
這是來自Docs的內容:'在MySQL中,只有InnoDB和BDB(BerkeleyDB)表格格式支持事務處理。其他標準存儲引擎忽略事務並且不能回滾數據修改。' – 2013-02-21 06:08:30