C# OledbConnection.Dispose()是否关闭连接?
可能重复:C# OledbConnection.Dispose()是否关闭连接?,c#,.net,dispose,oledbconnection,C#,.net,Dispose,Oledbconnection,可能重复: OledbConnection.Dispose()是否关闭连接 我知道SqlConnection可以,但是OledbConnection呢?是的。如果它没有,那么它就不能完全处置它的资源。BinaryReader、BinaryWriter等都会关闭底层流是的,它也会关闭。 资料来源: Dispose方法调用Close,并从中删除OleDbConnection 连接池 有关详细信息,请参阅参考链接上的备注部分,了解释放托管和非托管资源的情况。是: Dispose方法调用Close,并
OledbConnection.Dispose()是否关闭连接
我知道SqlConnection
可以,但是OledbConnection
呢?是的。如果它没有,那么它就不能完全处置它的资源。BinaryReader、BinaryWriter等都会关闭底层流是的,它也会关闭。
资料来源:
Dispose方法调用Close,并从中删除OleDbConnection
连接池
有关详细信息,请参阅参考链接上的备注部分,了解释放托管和非托管资源的情况。是:
Dispose方法调用Close,并从连接池中删除OleDbConnection
请注意,以上内容来自.NET Framework 1.1。但是(在这种情况下)你可以相信事情没有改变
此外,您几乎可以100%确定每个实现IDbConnection
的类都将在Dispose
方法中“关闭”连接-无论这对特定实现意味着什么都不相关,但这相当于手动调用close
每一个不以这种方式运行的实现都应该被我认为是失败的。这里是最终的证明。。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);
}
是的,根据MSDN上的文档,OleDbConnection.Dispose()
也会调用OleDbConnection.Close()
为什么您认为有区别?是的。与其调用.Dispose,不如尝试将处理连接的using
块,因为using
块中的代码将完成执行。@AmiramKorach:人们只讨论了SqlConnection
DbConnection
是一个抽象类,因此它取决于OledbConnection
的实际实现。