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"))
我在经典 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"))