日期:2014-05-17  浏览次数:20476 次

SqlConnection不可调用Dispose?
今天看到一个帖子,其中有这么一句话:“SqlConnection的Close方法是把Connection还给连接池,而Dispose的方法是彻底关闭和释放连接。因此,在程序中切记不可手工调用Dispose的方法 。一是不安全,二是效率不高。”

根据个人理解:
【1】使用SqlConnection MSDN中一般倡导使用using(){}(参见MSDN中示例)而using语句"确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。 通过将对象放入 try 块中,并在调用 finally 块中的 Dispose,可以获得相同的结果;实际上,这就是编译器转换 using 语句的方式。"(参见MSDN:using)

【2】"我们强烈建议您在使用完连接时一定要关闭连接,以便连接可以返回池。 要关闭连接,可以使用 Connection 对象的 Close 或 Dispose 方法,也可以通过在 C# 的 using 语句中或 Visual Basic 的 Using 语句中打开所有连接。 不是显式关闭的连接可能不会添加或返回到池中。"(参见MSDN:SQL Server 连接池) 

综上,本人觉得是使用Close或者Dispose应该没什么关系吧。各位觉得呢?

------解决方案--------------------
这两个都会关闭sql连接,close纯粹是关闭sql连接,而dispose则是关闭连接,并把连接池释放掉
------解决方案--------------------
探讨

这两个都会关闭sql连接,close纯粹是关闭sql连接,而dispose则是关闭连接,并把连接池释放掉

------解决方案--------------------
dispose后连接不能重新打开,close后可以。通常情况是,对象调用dispose之后不再可用。

参考