mysql connector6.2.3.0(.net) を使用して C# から mysql 5.1 を接続しています。一度に 3 つのテーブルを挿入したいので、そのためにトランザクションを使用しています。 3 番目のテーブルの場合、トランザクションはロールバックされません。データは最初の 2 つのテーブルに挿入されます。
これは私のコードです...
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();
}
最初は、自動コミットを無効にしたいと思います...しかし、これをどこに設定する必要があるのか わかりません...
これの何が悪いのか教えてください...