C# - 我应该使用静态数据库连接

时间:2012-10-11 11:49:22

标签: c# database oracle

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

2 个答案:

答案 0 :(得分:7)

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

不,您应该每次都使用新连接,这是Microsoft推荐的标准做法。如果你正在使用ODBC等,那么windows管理这些连接,缓存它们以便重复使用,这样可以更容易地管理事物的生命周期。

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

  

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

有关详细信息,请参阅OdbcConnection

答案 1 :(得分:1)

通常,不,您不应该使用单个连接 - 所有.NET ADO.NET提供程序都支持连接池,正常模式是根据需要打开/关闭连接(在{{1 }}或using阻止以确保在发生异常时关闭连接。)

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

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