3

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

4

5 回答 5

5

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

于 2008-09-18T04:47:58.800 回答
2

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

于 2008-09-18T04:49:48.187 回答
2

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

当涉及到数据库连接时,这是绝对不行的。此外,绝对没有必要。

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

于 2008-09-23T12:02:06.363 回答
1

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

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

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

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

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

于 2008-09-26T06:04:53.123 回答
-2

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

于 2008-09-23T12:05:27.290 回答