【问题标题】:SqlDataReader in ASP.NET deallocation and closeASP.NET 中的 SqlDataReader 释放和关闭
【发布时间】:2012-05-23 02:18:47
【问题描述】:

以下代码是否正确清理了所有 SqlDataReader:

using (IDataReader reader = SqlHelper.GetDataReader(sql.ToString())) {
    if (reader.Read()) {
        result = reader.IsDBNull(0) ? string.Empty : reader[0].ToString();
    }
}

我的代码中有一些并发/解除分配问题,并试图解决它们。

【问题讨论】:

  • 您在哪里捕获并发/解除分配问题,是否有任何堆栈跟踪?

标签: c# asp.net .net sql-server sqldatareader


【解决方案1】:

Dispose() 将在 IDataReader 上自动调用,一旦 using 语句的结尾超出范围。还要确保阅读器是使用CommandBehavior.CloseConnection 创建的,这样阅读器会在连接被释放后释放它。

但我没有看到任何其他涉及连接的代码。如果您使用的是经典的 SqlHelper 类,那可能是问题的根源......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多