我有一个用户点击保存按钮的项目:
1)INSERT查询将数据插入表1中的MySQL DB。 2)更新表2中的查询更新1字段值。
如果步骤1失败,则步骤2需要停止,步骤1需要反向。这意味着需要一起完成步骤1和步骤2以完成交易。否则交易需要失败。
任何帮助?
答案 0 :(得分:0)
您可以执行类似
的操作MySqlConnection con = new MySqlConnection( ... );
con.Open();
MySqlTransaction tx = con.BeginTransaction();
MySqlCommand cmd = new MySqlCommand( "", con );
cmd.Transaction = tx;
try
{
cmd.CommandText = "INSERT query insert Data into MySQL DB in Table 1";
cmd.ExecuteNonQuery();
cmd.CommandText = "Update Query update 1 fields value in Table 2";
cmd.ExecuteNonQuery();
tx.Commit();
}
catch( MySqlException e )
{
// TODO: report error?
tx.Rollback();
}
然后,如果第一次插入查询失败,则从那里捕获错误和回滚(中止事务) 或者,如果第二次查询失败,则再次回滚(撤消第一次查询的更改)。 否则承诺一切。
请记住在桌面上使用Innodb引擎(否则交易不能在MyISAM中运行)。
答案 1 :(得分:0)
您实际上是在给出交易的确切定义:
在需要执行两个或多个SQL命令的情况下使用转换,如果其中任何一个语句失败,则其他任何语句都无法更改数据库。
有关详细信息,请参阅以下链接:http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET
希望这有助于你