2011-02-01 153 views
2

请让我知道下列代码是否正确。 我的意思是连接关闭并处置事务关闭,处置和回滚,以防异常。 欢迎任何其他建议。使用和交易

谢谢 Adrya

using (FbConnection c = new FbConnection(m_connection)) 
{ 
    c.Open(); 
    using (FbTransaction trans = c.BeginTransaction()) 
    { 
     using (FbCommand cmd = new FbCommand("DELETE_MESSAGES_QUEUE", c, trans)) 
     { 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      cmd.Parameters.Add("INQUEUENAME", queueName); 

      cmd.ExecuteNonQuery(); 
     } 
     using (FbCommand cmd = new FbCommand("DELETE_QUEUE", c, trans)) 
     { 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      cmd.Parameters.Add("INQUEUENAME", queueName); 

      cmd.ExecuteNonQuery(); 
     } 
     trans.Commit(); 
    } 
} 
+0

如果引发异常,FbTransaction是否会回滚? – alexn 2011-02-01 08:49:01

回答

2

是的,这个代码看起来完美的罚款。

0

但我可能会使用事务范围,但不确定处置事务是否回滚,但TransactionScope不会。

using (var scope = new TransactionScope()) 
using (var c = new FbConnection(m_connection)) 
{ 
     using (var cmd = new FbCommand("DELETE_MESSAGES_QUEUE", c)) 
     { 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      cmd.Parameters.Add("INQUEUENAME", queueName); 

      cmd.ExecuteNonQuery(); 
     } 
     using (var cmd = new FbCommand("DELETE_QUEUE", c)) 
     { 
      cmd.CommandType = System.Data.CommandType.StoredProcedure; 
      cmd.Parameters.Add("INQUEUENAME", queueName); 

      cmd.ExecuteNonQuery(); 
     } 
     scope.Complete(); 
} 
+0

SqlTransaction在回滚时处理。我不知道FbTransaction。根据FbConnection是否支持它,使用TransactionScope可能会也可能不会。 – 2011-04-27 21:46:53