我有一個項目中刪除,其中上保存按鈕用戶點擊:如何檢查和如果MySQL插入查詢失敗,則刪除插入的數據在C#
1)將查詢數據插入到MySQL數據庫表1。 2)更新表2中的查詢更新1字段值。
如果步驟1失敗,則步驟2將需要停止並且步驟1需要反轉。這意味着步驟1和步驟2需要一起完成才能完成交易。否則,交易需要失敗。
任何幫助?
我有一個項目中刪除,其中上保存按鈕用戶點擊:如何檢查和如果MySQL插入查詢失敗,則刪除插入的數據在C#
1)將查詢數據插入到MySQL數據庫表1。 2)更新表2中的查詢更新1字段值。
如果步驟1失敗,則步驟2將需要停止並且步驟1需要反轉。這意味着步驟1和步驟2需要一起完成才能完成交易。否則,交易需要失敗。
任何幫助?
你可以做這樣的事情
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中不起作用。
你實際上是讓交易的確切定義:在你需要以這樣的方式,如果報表中的任何一個失敗,則沒有其他的語句將能夠執行兩個或多個SQL命令
使用transations改變數據庫。
欲瞭解更多信息,請參考以下鏈接:http://www.codeproject.com/Articles/10223/Using-Transactions-in-ADO-NET
希望這有助於你
你似乎已經知道有關事務。只要使用事務並回滾,而不是在第一個查詢出錯時提交。 – 2014-09-30 20:20:14
請參閱:http://stackoverflow.com/questions/14252560/mysql-transaction-commit-and-rollback – 2014-09-30 20:21:05
我假設你使用'SqlCommand',所以請嘗試使用'SqlCommand.Transaction'屬性。 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.transaction(v=vs.110).aspx – 2014-09-30 20:21:29