能否在Application中保存一个Connection对象?

bineon 2004-12-28 10:00:57
Application_OnStart是在应用程序开始执行的时候执行的,那么是不是说当有用户请求这个web站点的时候这个方法就开始执行呢?
能不能在这个方法里面建立一个Connection对象然后让所有的用户都共享这一个连接呢?
也就是能不能多个用户(在世界各地的不同用户)同时访问同一网站的时候只使用一个Connection对象?
...全文
202 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
epic2005 2005-01-24
  • 打赏
  • 举报
回复
set application("conn")=server.createobject("adodb.connection")
myvicy 2005-01-24
  • 打赏
  • 举报
回复
用application("online")变量记录已经登录社区的在线人数,因为一旦有用户访问服务器而不管用户是否登录,都会产生OnStart事件,所以不能在OnStart事件里使Applicaiton("online")加一。因为不管是否是登录用户的会话结束都会产生OnEnd事件(假如有访客访问了服务器但并不登录社区,他的会话结束后也会产生OnEnd事件),所以在Session_OnEnd事件里用了句if语句来判断是否为已登录用户的OnEnd事件,如果是才将在线人数减一。

  这只是一个统计在线人数的简单例子,对于一个完整的虚拟社区来说,仅仅统计有多少人在线是不够的,在本例中数据库里有个online字段是用来记录用户的在线状态,用户登录的时候,在login.asp里将online设为1,但用户离线时并没有将online设为0,要完善它,就要修改一下Session_OnEnd事件,在该事件里将online设为0。

  ===global.sas===

  <script LANGUAGE="VBScript" RUNAT="Server">

  Sub Application_OnStart

   application("online")=0

   set application("conn")=Server.CreateObject("ADODB.Connection")

   application("db")=Server.MapPath("\bbs.mdb") ''此处最好使用绝对路径\bbs.mdb,下文有详细介绍

  End Sub

  sub Application_OnEnd

   set application("conn")=nothing

  End Sub

   Sub Session_OnStart

  End Sub

  Sub Session_OnEnd

   if session.contents("pass") then ''判断是否为登录用户的Session_OnEnd

     application("con").open ="driver={Microsoft Access Driver (*.mdb)};dbq="&application("db")

      application.lock

      application("online")=application("online")-1

      application("con").Execute ("update friends set online=0 where id="&session.contents("id"))

      application.unlock

      application("con").close

   end if

  End Sub

  </script>

  ==============

  至此,完整的代码已经完成了。因为在Application和Session的OnEnd事件里不能使用Server对象,所以要将数据库的连接及数据库在服务器上的物理地址(d:\inetpub\wwwroot\bbs.mdb)存储在application变量中,并在Application_OnStart事件中预先处理。


大概可以揭贴了。
bineon 2005-01-24
  • 打赏
  • 举报
回复
高手呢?
bineon 2005-01-11
  • 打赏
  • 举报
回复
是否存在并发控制的问题呢?
bineon 2004-12-29
  • 打赏
  • 举报
回复
如果可以的话,那么带来的效率如何呢?为什么我平时所见的都没有使用这种方式呢?比如下载的asp代码里面。
天啊啊啊啊 2004-12-28
  • 打赏
  • 举报
回复
可以的
hhjjhjhj 2004-12-28
  • 打赏
  • 举报
回复
可以,
不用Application_OnStart也行

conn.asp

if application("conn") is nothing then
set application("conn")=server.createobject("adodb.connection")
.........
netbooting 2004-12-28
  • 打赏
  • 举报
回复
可以

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧