C# 使用和交易
请让我知道下面的代码是否正确。 我的意思是连接已关闭并已处理和事务已关闭并已处理,并在异常情况下回滚。 欢迎提出任何其他建议 谢谢,, 阿德里亚C# 使用和交易,c#,sql,firebird,C#,Sql,Firebird,请让我知道下面的代码是否正确。 我的意思是连接已关闭并已处理和事务已关闭并已处理,并在异常情况下回滚。 欢迎提出任何其他建议 谢谢,, 阿德里亚 是的,这段代码看起来很好。我可能会使用事务作用域,但不确定是否处理事务会回滚它,而TransactionScope会 using (var scope = new TransactionScope()) using (var c = new FbConnection(m_connection)) { using (var cmd = n
是的,这段代码看起来很好。我可能会使用事务作用域,但不确定是否处理事务会回滚它,而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();
}
是的。该方法将处理底层事务,如果事务仍在运行,则执行回滚()
如果异常发生在服务器端(或连接丢失),则服务器回滚事务。如果引发异常,FbTransaction是否回滚?但您可以检查它。将您的SP除以零(导致异常),然后查看事务是否会回滚。从flamerobin建立SYSDBA连接,并在监视表中查看哪些连接/事务/语句处于活动状态或关闭状态。SqlTransaction在回滚时释放。我不知道这件事。使用TransactionScope可能有效,也可能无效,这取决于FbConnection是否支持它。
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();
}