5

我读了这个关于处理 SQL 连接的问题。

我的问题是,简单地关闭一个 sql 连接但不处理它有多糟糕?我们有一个简单关闭但从不释放的函数,每天使用 1000 次。是直接关闭它更好,还是关闭并处理它更好?

我知道 dispose() 也会关闭连接,但是我想知道为什么 close 不处理连接。

4

2 回答 2

4

关于连接的重要一点是关闭它们,以便将它们返回到连接池。

因此,处置和关闭连接之间几乎没有区别,只要您对关闭而不是重用连接有纪律。

但是,习惯于将连接的创建包含在using语句中意味着您永远不会忘记关闭它。

这是一个通用的好习惯用法 - 任何实现的对象的创建都IDisposable应该包含在一个using语句中,并且作为这样的习惯用法,它也是一个很好的习惯用法。

于 2013-01-14T15:16:36.493 回答
0

取决于它是否超出范围。如果确实如此,它将被关闭,并返回连接池(假设你没有禁用它)。因此,在您执行操作时隐式或显式调用 close 会使您的意图变得清晰,并使该连接“立即”可用于在池中重用。

想法是说服开发人员快速进出数据库。很多小额交易。不是旧样式打开一个连接然后隐藏它,这样其他人就无法得到它,以防万一再次需要它。

如果 Connection pooling 在 using 子句上,则相当于 Create、open、Close。如果它关闭,则 using 子句等效于 create、open、close、Dispose。

在任何一种情况下,真正的交易是确保它超出范围。除了非常罕见的情况外,连接应该是本地引用并且具有此特定用途的生命周期。您通常不会在运行时实例化一个并使其成为您的主窗体的属性,例如。

于 2013-01-14T15:41:53.520 回答