可能重复:
Is there any need to close a DbConnection if a using clause is used?
OledbConnection.Dispose()
关闭连接吗?
我知道SqlConnection
但OledbConnection
呢?
答案 0 :(得分:3)
是的,也是。
来源:OleDbConnection.Dispose Method (Boolean)
Dispose方法调用Close,并从中删除OleDbConnection 连接池。
有关详细信息,请参阅参考链接上的Remarks
部分,以了解有关释放托管和非托管资源的情况。
答案 1 :(得分:2)
是的,根据MSDN http://msdn.microsoft.com/en-us/library/aa325890(v=vs.71).aspx上的文档,OleDbConnection.Dispose()
也会调用OleDbConnection.Close()
。
答案 2 :(得分:1)
是的MSDN:
Dispose方法调用Close,并从连接池中删除OleDbConnection。
注意,以上内容来自.NET Framework 1.1。但是(在这种情况下)你可以指望没有改变的事情。
此外,您几乎可以100%确定实现IDbConnection
的每个类都将“关闭”Dispose
方法中的连接 - 无论对于特定实现的意义是什么都不相关,但它相当于手动调用Close
。
每个不采取这种行为的实施都应该被IMO认为是破碎的。
答案 3 :(得分:0)
是。如果没有,那么就无法完全处理它的资源。 BinaryReader,BinaryWriter等都关闭了底层流
答案 4 :(得分:0)
这是终极证据.. 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);
}