我们有一个简单的循环过程,可以在某些数据行上执行某些操作。
提交更改时,新行和SqlConnection对象将传递给处理行更改或添加的方法。
该过程在10次中运行5次,一切正常。 SqlConnection在循环开始时打开,在循环后关闭,但有时它确实在循环期间关闭。代码在循环期间的任何时候都没有调用close()。
所以我的问题就是为什么它可以自己关闭。
干杯
作为参考,代码类似于以下
connection.Open();
foreach(DataRow row in rows)
{
if(rubbish)
{
//make some changes and save
DatabaseConnector.Save(sqlStringToExecute, connection);
}
}
connection.Close();
答案 0 :(得分:1)
连接不会自行关闭,不会。连接关闭的主要时间是:
using
声明)Close()
CommandBehaviour.CloseConnection
行为如果您实际上遇到异常(可能是超时或死锁),在using
块中弹跳(处理它),并且可能吞下异常,则第一种情况非常有可能。
第三种是善意的代码。
要进行调查,您可以订阅StateChange
事件并在处理程序中添加断点;然后向后走过堆栈跟踪,你就会知道正是谁正在关闭它,以及为什么。如果您使用超出此代码范围的连接,请记得取消订阅。