Session OnEnd Classic 中的数据库编辑 ASP

Database Editing in Session OnEnd Classic ASP

我在经典 ASP 项目中创建一个网站,具有注销功能。 我想在会话结束时访问登录数据库并进行更改。编码类似于:

在global.asa中:

Sub Session_OnEnd()
Set studcon = Server.CreateObject("ADODB.Connection")
studcon.Open "Provider = Microsoft.JET.OLEDB.4.0;Data Source = E:\mailfan.mdb"
Set studrec = Server.CreateObject("ADODB.Recordset")
studrec.Open "login", studcon, 1, 3

studrec.movefirst
found = 0
Do While studrec.EOF or found = 1
    If studrec("ID") = Session("uid") Then
    studrec("log") = 0
    studrec.Update
    End If
    studrec.movenext
Loop
studrec.close
studcon.close
Set studrec = Nothing
Set studcon = Nothing
End Sub

但即使在 Session.Abandon 之后,日志字段的值仍然保持不变(当会话处于活动状态时为 1)。

小更新:我尝试 google 它,确实收到了一个非常相似的 link 有同样的问题:http://www.justskins.com/forums/problem-with-global-asa-77015.html

但代码与上述 link 中 Aaron Bertrand 建议的代码相同。是因为 IIS 8.0 吗?因为我会 运行 它在 Win XP sp3 IIS 6 上。我确实需要它在那里工作。

我在您的代码中的任何地方都看不到 SQL 查询。如果您打算使用记录集进行更新,则代替

studrec.Open "login", studcon, 1, 3

你应该有类似的东西

studrec.Open "select * from login", studcon, 1, 3

这假设您的数据库 table 被称为 "Login"

虽然使用记录集实际上是一种过于复杂的方法,但更新查询就足够了。您可以从

中删除所有代码
Set studrec = Server.CreateObject("ADODB.Recordset")

studrec.close

并将其替换为

studcon.Execute("UPDATE Login set log = 0 where id = " & Session("uid"))