【问题标题】:In Classic asp, can I store a database connection in the Session object?在经典 asp 中,我可以在 Session 对象中存储数据库连接吗?
【发布时间】:2008-09-18 04:43:31
【问题描述】:

我可以在 Session 对象中存储数据库连接吗?

【问题讨论】:

    标签: session asp-classic database-connection


    【解决方案1】:

    通常不建议这样做,应用程序变量中的连接字符串,带有一个很好的帮助函数/类是一个更受欢迎的方法。 Here 是一些参考。 (已删除死链接,因为它现在指向一个钓鱼网站)

    【讨论】:

      【解决方案2】:

      我似乎记得这样做会产生单线程应用程序的效果,这将是一件坏事。

      【讨论】:

        【解决方案3】:

        一般来说,我不会将任何对象存储在应用程序变量中(当然也不会存储在会话变量中)。

        当涉及到数据库连接时,这绝对是禁忌;而且,完全没有必要。

        如果您使用 ADO 与数据库通信,如果您使用 相同的连接字符串(是的,无论如何,将 this 存储在 Application 变量中)您所有的数据库连接,“连接池”将在幕后实现。这意味着当你释放一个连接时,它实际上并没有被破坏——它被放在一边,以供下一个想要相同连接的人使用。因此,下次您请求相同的连接时,它会“现成”而不是必须显式创建和实例化 - 这是一个相当不错的效率改进。

        【讨论】:

          【解决方案4】:

          从此链接http://support.microsoft.com/default.aspx/kb/243543

          你不应该在 Session 中存储数据库连接。

          据我了解,如果您这样做,那么针对同一用户的后续 ASP 请求必须使用同一线程。

          因此,如果您有一个繁忙的站点,“您的”线程可能已经被其他人使用,因此您必须等待它可用。

          将其乘以更多用户,您将让每个人都在等待其他人的线程和响应不快的网站。

          【讨论】:

            【解决方案5】:

            正如 CJM 所说,没有必要将连接存储在 Session 对象中:连接池要好得多。

            【讨论】:

              猜你喜欢
              • 2020-10-04
              • 1970-01-01
              • 1970-01-01
              • 2012-03-24
              • 1970-01-01
              • 2011-10-14
              • 2011-05-31
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多