2012-08-11 35 views
1

任何机构可以解释这种情况下循环提交和回滚如果插入命令或更新命令..如何做到在使用C#中的Windows应用程序

我知道使用一个插入或更新或不具有for循环的任何命令,我们可以提交并回滚数据中是否有错误。

但我的疑问是,如果我在for循环中插入命令或更新命令,那么什么时候会提交或回滚。

+0

如果您正在使用LIN Q你可以使用用户事务范围,也可以在完成迭代后放置SubmitChanges。 – 2012-08-11 07:28:43

+0

感谢您的回复..我没有使用LINQ。我正在使用sql quary(ADO.Net)。 – 2012-08-11 07:32:18

回答

2

你可以写这样的事情

//Start transaction here 
bool isSuccess = true; 
for (int i = 0; i < 100; i++) 
{ 
    try 
    { 
     //your Insert/update Query 
    } 
    catch (Exception ex) 
    { 
     isSuccess = false; 
     break; 
    } 
} 

if (isSuccess) 
{ 
    //Commit transaction 
} 
else 
{ 
    //Roll back transaction 
} 

但我的建议是使用不同的方法

for (int i = 0; i < 100; i++) 
{ 
    //Build your Insert/Update query here 
    //Note : do not execute it yet 
} 

//Start transaction 
try 
{ 
    //Execute the query here 
    //Commit transaction 
} 
catch(Exception ex) 
{ 
    //Roll back transaction 
} 

在你将被锁定表中的第一种情况下,直到你的整个for循环完成,其中也可能包含业务逻辑,但在第二种情况下,您将只在需要的部分进行交易(插入/更新部分)

+0

谢谢你的回复..我会尝试这种方法... – 2012-08-11 07:39:04

+0

我使用第一种情况。如果condion我保持提交command.But我得到这个错误.........这个SqlTransaction已完成;它不再可用。你可以解释... – 2012-08-11 12:21:17

+0

你可以用你试过的代码更新问题,以便我可以检查它 – Vamsi 2012-08-11 14:02:29

相关问题