LoadDataSet是否隐式关闭连接

本文关键字:连接 是否 LoadDataSet | 更新日期: 2023-09-27 18:05:50

我在asp.net应用程序中使用microsoft. enterprise .libraries。我正在调用LoadDataSet。下面的代码使用了using,所以这意味着一旦调用完成,所有资源将被清理。

当对db进行调用并且超时并且在应用程序中抛出错误时会发生什么,连接会被关闭吗?

谢谢,罗伯特。

public virtual void LoadDataSet(DbCommand command, DataSet dataSet, string[] tableNames)
{
    using (var wrapper = GetOpenConnection())
    {
        PrepareCommand(command, wrapper.Connection);
        DoLoadDataSet(command, dataSet, tableNames);
    }
}

LoadDataSet是否隐式关闭连接

using语句实际上展开为如下所示,所以是的,如果包装器的Dispose()调用释放了所有适当的资源,那么就没有泄漏(至少在wrapper对象内):

var wrapper = GetOpenConnection()
try
{
    PrepareCommand(command, wrapper.Connection);
    DoLoadDataSet(command, dataSet, tableNames);
}
finally
{
    if (wrapper != null)
    {
        ((IDisposable)wrapper ).Dispose();
    }
}