我读了这个关于处理 SQL 连接的问题。
我的问题是,简单地关闭一个 sql 连接但不处理它有多糟糕?我们有一个简单关闭但从不释放的函数,每天使用 1000 次。是直接关闭它更好,还是关闭并处理它更好?
我知道 dispose() 也会关闭连接,但是我想知道为什么 close 不处理连接。
我读了这个关于处理 SQL 连接的问题。
我的问题是,简单地关闭一个 sql 连接但不处理它有多糟糕?我们有一个简单关闭但从不释放的函数,每天使用 1000 次。是直接关闭它更好,还是关闭并处理它更好?
我知道 dispose() 也会关闭连接,但是我想知道为什么 close 不处理连接。
关于连接的重要一点是关闭它们,以便将它们返回到连接池。
因此,处置和关闭连接之间几乎没有区别,只要您对关闭而不是重用连接有纪律。
但是,习惯于将连接的创建包含在using
语句中意味着您永远不会忘记关闭它。
这是一个通用的好习惯用法 - 任何实现的对象的创建都IDisposable
应该包含在一个using
语句中,并且作为这样的习惯用法,它也是一个很好的习惯用法。
取决于它是否超出范围。如果确实如此,它将被关闭,并返回连接池(假设你没有禁用它)。因此,在您执行操作时隐式或显式调用 close 会使您的意图变得清晰,并使该连接“立即”可用于在池中重用。
想法是说服开发人员快速进出数据库。很多小额交易。不是旧样式打开一个连接然后隐藏它,这样其他人就无法得到它,以防万一再次需要它。
如果 Connection pooling 在 using 子句上,则相当于 Create、open、Close。如果它关闭,则 using 子句等效于 create、open、close、Dispose。
在任何一种情况下,真正的交易是确保它超出范围。除了非常罕见的情况外,连接应该是本地引用并且具有此特定用途的生命周期。您通常不会在运行时实例化一个并使其成为您的主窗体的属性,例如。