处理连接或关闭连接

时间:2012-07-12 09:00:39

标签: c# asp.net performance database-connection informix

以下哪两种方法有更好的表现?

using( var DB_Connection_s = new DBConnection() )
{
 //todo: interact with database connection
}

或只是:

DB_Connection_s.Close();

最后。

第一种方法是否使汇集概念无用?因为如果我为每次使用处理连接,那么我每次都必须打开一个新连接(并且池中没有任何连接)。

4 个答案:

答案 0 :(得分:7)

using模式更好,因为Dispose调用无论如何都会关闭连接,但作为奖励,即使使用中的某些内容出错,连接也会关闭。例如,异常或只是强制程序执行退出使用范围的返回。使用using时,您不需要显式关闭连接,这使代码更具可读性。 作为另一种模式,必须尽快关闭连接。关闭/打开连接太频繁没有性能缺陷,因为连接池将优化连接重用。

答案 1 :(得分:5)

  

在Connection ...上调用Close或Dispose时,会将连接释放回池中

source = SQL Server Connection Pooling (ADO.NET)

因此,请不要担心错过池化连接会导致性能下降 从代码的角度来看,差异应该非常小,以至于应始终使用using语句

答案 2 :(得分:1)

使用Dispose。在Dispose内部,它将关闭连接,因此您不必担心,如果有疑问,可以使用Reflector或类似设备轻松检查。

至于性能,我仍会选择使用。 Windows启用了各种缓存(当然在ODBC中),以确保对同一连接的重复请求可以重复使用,因此您不必担心性能。

答案 3 :(得分:1)

除非你很快再打电话给.Open(),否则

使用using(){}块。

如果您打算在其他地方尽快使用相同的连接, 致电.close();然后.open()等等...... 保持你的类实现IDisposable并处理那里的连接!

仍然需要时间来创建Connection对象