Session OnEnd Classic ASP中的数据库编辑

时间:2015-01-18 11:18:02

标签: asp-classic database-connection

我在Classic ASP Project中创建了一个具有Logout功能的网站。 我希望在会话结束时访问登录数据库并进行更改。编码类似于:

在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

但Even After Session.Abandon log field的值保持不变(当会话活动时为1)。

小更新:我试图谷歌它,并收到一个非常相似的链接有相同的问题:http://www.justskins.com/forums/problem-with-global-asa-77015.html

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

1 个答案:

答案 0 :(得分:1)

我无法在代码中的任何位置看到SQL查询。如果您打算使用记录集进行更新,请代替

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

你应该有像

这样的东西
studrec.Open "select * from login", studcon, 1, 3

这假定您的数据库表被调用"登录"

使用记录集实际上是一种过于复杂的方法来完成所有这些,但更新查询应该足够了。您可以从

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

studrec.close

并将其替换为

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