else   if   (r.getString(2).equals(UserName)&&r.getString(3).equals(Password)&&r.getString(4).equals("0"))   { 
%> 
<% 
    session.setAttribute("UserName",   r.getString("UserName")); 
    session.setAttribute("Password",   r.getString("Password")); 
    session.setAttribute("isCheck",   r.getString("isCheck")); 
    try   { 
        DBBean.update(UserName); 
        
    } 
    catch   (Exception   ex)   { 
        ex.printStackTrace(); 
    } 
%> 
<jsp:forward   page="index.jsp"/> 我试着把     session.setAttribute("UserName",   r.getString("UserName")); 
    session.setAttribute("Password",   r.getString("Password")); 
    session.setAttribute("isCheck",   r.getString("isCheck"));
注释掉,于是就没有错误,但是不能储存对象
有没有好的办法或者指出哪里改进一下。 
急需帮助!

解决方案 »

  1.   

    没看出哪里出的问题,可能跟你前面的代码也有关系吧,最好把全部的代码全部贴出来,还有你最好将rs.getString()之类的直接赋值给一个变量,然后再对变量进行操作,要不总读数据库,多影响速度呀
      

  2.   

    conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);   你使用了类似如上的操作,你的JDBC驱动可能不支持。换最新的驱动看看 SQL Server 2005 的
      

  3.   

    谢谢上面的两位,首先rs.getString()之类的直接赋值给一个变量,有点不明白。我的全部代码是:
    <%@page contentType="text/html; charset=GBK" language="java"%>
    <%@page import="java.sql.* "%>
    <%request.setCharacterEncoding("gb2312");%>
    <jsp:useBean id="DBBean" scope="request" class="project.DBBean"/>
    <html>
    <head>
    <title>login</title>
    </head>
    <body bgcolor="#ccffcc">
    <%
      String UserName = request.getParameter("UserName");
      String Password = request.getParameter("Password");
      try {
        ResultSet r = DBBean.getResultSet(UserName,Password);
          if (!r.next()) {
    %>
    <jsp:forward page="fault.jsp"/>
    <%
      DBBean.close();
      } else if (r.getString(2).equals(UserName)&&r.getString(3).equals(Password)&&r.getString(4).equals("0")) {
    %>
    <%
    //  session.setAttribute("UserName", r.getString("UserName"));
    //  session.setAttribute("Password", r.getString("Password"));
    //  session.setAttribute("isCheck", r.getString("isCheck"));
      try {
        DBBean.update(UserName);  }
      catch (Exception ex) {
        ex.printStackTrace();
      }
    %>
    <jsp:forward page="index.jsp"/>
    <%
      DBBean.close();
      } else {
    %>
    <jsp:forward page="watch.jsp"/>
    <%
      DBBean.close();
      }} catch (Exception ex) {
        ex.printStackTrace();
      }finally{
       DBBean.close();
      }
    %>
    </body>
    </html>
    里面用的一个javaBean连接数据库和所有的大都相同。
    麻烦帮助我看看!
    另外我用的是ODBC,所以应该和数据库没有关系吧。
    问题我觉得大概是在注释掉的部分,能说明一下他的作用嘛。
      

  4.   

    resultset每个行的列值只能读一次
    你在if(....)里面已经读取了
    后面....就不能再读了
    所以一次读出来用变量保存 然后使用比较实惠还有 感觉上面 你用 指定的 Username和PassWord获取了 resultset
    然后再用获取的resultset里的值 比较前面的Username,Password
    会不会太罗嗦了
     一样用了DBben封装了 索性把后面的判断代码也一起放进去了 直接返回 username,pwd,ischeck