即時嘗試從多個數據庫表中刪除記錄。對於錯誤處理,我使用了一個try/catch塊,如下所示。如何在C#中使用語句進行錯誤處理
try
{
using (SqlCeConnection oConn = new SqlCeConnection(ConnectionString))
{
oConn.Open();
using (SqlCeTransaction transaction = oConn.BeginTransaction())
{
//delete from multiple tables using ADO.NET
transaction.Commit();
}
}
}
catch
{
//error handling
}
問題是當引發異常事務沒有回滾。在閱讀多個論壇時,我的結論是'使用'語句應該處理事務和連接。處置時,未提交的事務應該回滾。
有人可以告訴我我做錯了什麼。
將'try-catch'塊移到''using'內使用' –
@ L.B只要異常發生在提交行之前,這應該沒什麼區別。在表面上,代碼看起來很好,但它取決於SqlCe DLLs中的處理代碼是如何實現的,我只能假定它執行常識並回滾事務。 –
我討厭聽起來很愚蠢,但是......你怎麼知道你的交易正在承諾,儘管從來沒有碰到交易。提交? – sq33G