8

在我连接到 Orace 数据库的应用程序中,我总是创建一个新连接,打开它,执行 OracleCommands,然后最后关闭它。最近我认为实现静态连接会是一个更好的主意。假设我有一个可以从任何地方访问的静态连接。每次我需要连接到数据库时,我都可以检查我的静态连接的状态,如果它还没有打开,就打开它,然后再关闭它。你认为这会是有益的还是有更多的缺点?

4

2 回答 2

7

我假设您在这里使用 ODBC,因为您没有准确说明并且通常使用它...

不,您应该每次都使用新连接,这是 Microsoft 推荐的标准做法。如果您使用 ODBC 等,那么 Windows 会管理这些连接,缓存它们以供重复使用,并且可以更轻松地管理事物的生命周期。

如果您使用静态连接,您可能会提前将其丢弃或在不知情的情况下将其关闭。一般来说,它只是有点尴尬和过早的优化。

要部署高性能应用程序,您经常必须使用连接池。但是,当您为 ODBC 使用 .NET Framework 数据提供程序时,您不必启用连接池,因为提供程序会自动管理它。

有关详细信息,请参阅OdbcConnection

于 2012-10-11T11:50:01.593 回答
1

一般来说,不,您不应该使用单个连接 - 所有 .NET ADO.NET 提供程序都支持连接池,并且正常模式是根据需要打开/关闭连接(在 a usingortry/finally块中以确保连接发生异常时关闭)。

在单线程客户端应用程序中,您可以不使用共享静态连接,但它不太可能给您带来任何可衡量的性能优势 - 所以不要这样做。

在任何其他应用程序中,您绝对不应该使用共享静态连接,因为它不是线程安全的。

于 2012-10-11T12:31:50.743 回答