【问题标题】:Is disposing a SqlCeDataReader a good idea?处理 SqlCeDataReader 是个好主意吗?
【发布时间】:2013-04-01 04:50:06
【问题描述】:

在尝试追踪仅在某些情况下发生的空引用异常的原因时,我遇到了以下代码:

SqlCeDataReader IdValsReader = IdValsCMD.ExecuteReader();
if ((IdValsReader.Read()) && (!IdValsReader.IsDBNull(0)))
{
    return string.Format("{0};{1};{2};{3};{4};{5};{6};{7};", 
        IdValsReader.GetValue(DESCRIPTION_INDEX),
        . . .
}
IdValsReader.Close();

...想知道我是否应该在 IdValsReader.Close() 之后添加这一行:

IdValsReader.Dispose();

我确实这样做了,但似乎没有什么区别;我应该把它留在里面还是去掉它?

【问题讨论】:

    标签: c# sql-server-ce windows-ce .net-1.0 sqlcedatareader


    【解决方案1】:

    来自 MSDN:[Dispose 方法] 释放 DbDataReader 使用的资源并调用 Close。

    因此,一旦您完成阅读器,调用 dispose 似乎是明智的。更好的是,将其全部包装在 Using 块中,然后忘记它。

    【讨论】:

    • using (SqlCeDataReader IdValsReader = IdValsCMD.ExecuteReader()) { // code }
    • 让我指出,仅仅因为 MSDN 说,并没有做到这一点。恰当的例子:Microsoft Access OLEDB 连接将关闭。
    • 如果您不信任 MSDN,请反编译代码。我不确定这是否值得担心。
    猜你喜欢
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 2018-06-22
    • 2020-02-11
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多