以下哪两种方法有更好的表现?
using( var DB_Connection_s = new DBConnection() )
{
//todo: interact with database connection
}
或只是:
DB_Connection_s.Close();
最后。
第一种方法是否使汇集概念无用?因为如果我为每次使用处理连接,那么我每次都必须打开一个新连接(并且池中没有任何连接)。
答案 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对象