我有些困惑,我想清除它 - 我使用ADO.NET將值插入到數據庫中。假設我想插入10個項目,如果在插入第5個項目的數據時遇到錯誤,它應該回滾我插入數據庫的任何內容。C#.NET中的回滾INSERT命令
我剛剛讀了Transaction and Rollback方法的概念,並試圖在程序中實現它,但仍然插入了4個項目,並給出了第5個項目的錯誤消息。它不回滾插入查詢。
事務和回滾方法是否解決了我的問題,或者我需要使用其他方法。
這裏是我的代碼,
for (int i = 0; i < itemLength - 1; i++)
{
//--- Start local transaction ---
myTrans = Class1.conn.BeginTransaction();
//--- Assign transaction object and connection to command object for a pending local transaction ---
_insertQry = Class1.conn.CreateCommand();
_insertQry.Connection = Class1.conn;
_insertQry.Transaction = myTrans;
_insertQry.CommandText = "INSERT INTO Product_PropertyValue(ItemNo, PropertyNo, ValueNo) VALUES (@ItemNo, @PropertyNo, @ValueNo)";
//_insertQry = new SqlCommand("INSERT INTO Product_PropertyValue(ItemNo, PropertyNo, ValueNo) VALUES (@ItemNo, @PropertyNo, @ValueNo)", Class1.conn);
_insertQry.Parameters.AddWithValue("@ItemNo", _itemNo[i]);
_insertQry.Parameters.AddWithValue("@PropertyNo", _propNo);
_insertQry.Parameters.AddWithValue("@ValueNo", _propValue);
_insertQry.ExecuteNonQuery();
myTrans.Commit();
}
誰能幫助我?
如果「error」是一個異常,你是否在try塊中有你的事務,並且在catch部分回滾(並在finally中減少)(或者嘗試使用catch)? – 2012-04-13 19:24:40
這裏是我的代碼inseertQry.ExecuteNonQuery(); myTransaction.Commit();在try塊和catch中Transaction.Rollback(); – 2012-04-13 19:39:20
看看你的代碼的修改版本。 – 2012-04-13 20:29:36