1

我正在尝试验证信息,而不切换页面(在这种情况下是用户名,如果找到用户名,很好,填充一个文本框并使用它的用户名动态创建一个表)。但是,我在第 75 行收到错误消息:

ADODB.Recordset

 error '800a0e78' 

Operation is not allowed when the object is closed. 

/login.asp, line 75

我没有在任何地方关闭记录集。据我所知,它应该有效。我究竟做错了什么?

<%
Dim cn,rs
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.recordset")

    cn.Provider = "Microsoft.Jet.OLEDB.4.0"

    cn.Open Server.MapPath("login.mdb")

'Default message for the user on the login page
msg = "Please login"

'Logout code. This code empties the session variable which holds the user's userID.
If Request.QueryString("action") = "logout" Then
    Session("user_id") = ""
    msg = "You have been logged out"
End If


'Check if the form has been submitted

If Request.Form("Submit") = "Test" Then

    user_name = Request.Form("user_name")
    user_pass = Request.Form("user_pass")

    mySQL = "SELECT user_id, user_name, user_pass FROM users WHERE user_name = '" & user_name & "' AND user_pass = '" & user_pass & "'"

    'Select the data from the database using the submitted data.
    rs.Open mySQL, cn

        'Check if a match was found.
        If NOT rs.EOF Then

            'Session("user_id") = rsLogin("user_id")
            'Response.Redirect("profile.asp")

            u = rs("user_name")

        Else
            'If a match was not found then output an error.
            Response.Redirect("login.asp?errmsg=Login failed")
        End If
End If
%>



<!DOCTYPE html>
<html>
<head>
</head>

<body>
<form name="form1" id="form1" method="post" action="">
  <table width="300" border="0" cellspacing="0" cellpadding="2">
    <tr>
      <td>Username</td>
      <td><input name="user_name" type="text" id="user_name" /></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input name="user_pass" type="password" id="user_pass" /></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input type="submit" name="Submit" value="Test" /></td>
    </tr>
  </table>
</form>
<input id="fileno" value="<%=u%>" type="text">


<%
        While NOT rs.EOF
%>
    <table width="200" border="1" cellspacing="0" cellpadding="2">
  <tr>
    <th scope="col"><div align="left">username</div></th>
  </tr>

  <tr>
    <td><%=u%></td>
  </tr>
<%
        rs.MoveNext
        Wend
%>
</table>
</body>
</html>
4

2 回答 2

1

当这个条件失败时。

If Request.Form("Submit") = "Test" 

您的代码尝试在不打开记录集的情况下访问 rs.eof。

rs.open那个块的外面。

于 2013-02-23T05:07:12.657 回答
-2

表示您尚未关闭连接对象,请在页面末尾
尝试set cn =Nothing

于 2013-02-23T04:55:07.257 回答