8

可能重复:
如果使用 using 子句,是否需要关闭 DbConnection?

是否OledbConnection.Dispose()关闭连接?

我知道SqlConnection确实如此,但那又如何OledbConnection呢?

4

5 回答 5

5

是的,它也可以。

来源:OleDbConnection.Dispose 方法(布尔值)

Dispose 方法调用 Close,并从连接池中删除 OleDbConnection。

有关详细信息,请参阅Remarks参考链接上的部分以了解释放托管和非托管资源的情况。

于 2012-08-20T08:14:26.703 回答
3

是的,根据 MSDN http://msdn.microsoft.com/en-us/library/aa325890(v=vs.71).aspx上的文档,OleDbConnection.Dispose()也确实调用了OleDbConnection.Close().

于 2012-08-20T08:16:11.257 回答
2

是的,它确实MSDN

Dispose 方法调用 Close,并从连接池中删除 OleDbConnection。

请注意,以上内容来自 .NET Framework 1.1。但是(在这种情况下)你可以指望没有改变的事情。

此外,您几乎可以 100% 确定实现的每个类IDbConnection都会“关闭”Dispose方法中的连接——无论这对特定实现意味着什么都不相关,但它相当于Close手动调用。

每个不以这种方式运行的实现都应被 IMO 视为已损坏。

于 2012-08-20T08:15:26.883 回答
1

这是最终证明..该Dispose方法的实际代码,使用反射器拍摄:

// System.Data.OleDb.OleDbConnection
protected override void Dispose(bool disposing)
{
    if (disposing)
    {
        this._userConnectionOptions = null;
        this._poolGroup = null;
        this.Close();
    }
    this.DisposeMe(disposing);
    base.Dispose(disposing);
}
于 2012-08-20T08:16:01.620 回答
0

是的。如果没有,那么它就不能完全处置它的资源。BinaryReader、BinaryWriter 等也都关闭了底层流

于 2012-08-20T08:12:48.673 回答