if(rs.next())
   {
      int exp= rs.getInt("EXPERIENCE");
      if (exp>1000)
      {
        exp= exp - 50;
        sqlstring="update chatuser set EXPERIENCE='"+exp+"'";
        sqlbean.executeUpdate(sqlstring);
上面if(re.next())应该是没有到表单底部就遍历向下执行吧,我现在想把它改为只对表单当前一行进行操作,不想她向下执行应该怎么改呢
吧if(rs.next())改为什么
谢谢 请指导哈

解决方案 »

  1.   

    你这个没有问题啊,相反,我觉得,如果要全部遍历,把if改为while
      

  2.   

    但是我执行的时候 她把我数据库中所有的人物经验值都减了50分呀
    我发个我这个jsp页面的全部代码上来把
    <%@page contentType="text/html;charset=GBK"%>
    <%@page import="java.util.*"%>
    <%@page import="java.sql.*" %>
    <jsp:useBean id="sqlbean" scope="page" class="database.sqlbean" />
    <html>
    <head>
    <title>用户升级</title>
    </head>
    <body>
    <%
    request.setCharacterEncoding("gb2312");
    String kickname = request.getParameter("kickname");
    String Name =(String) session.getAttribute("originname");   ResultSet rs=null;
       String sqlstring = "select * from chatuser where username = '" + Name + "'";
       rs = sqlbean.executeQuery(sqlstring);
      if(rs.next())
       {
          int exp= rs.getInt("EXPERIENCE");
          if (exp>1000)
          {
            exp= exp - 50;
            sqlstring="update chatuser set EXPERIENCE='"+exp+"'";
            sqlbean.executeUpdate(sqlstring); synchronized (application) {
    Vector UserName=null;
    UserName= (Vector)application.getAttribute("UserName");
    UserName.remove(kickname);
    }
    synchronized (application) {
    Vector outMessage=null;
    outMessage= (Vector)application.getAttribute("Message");
    if(outMessage==null)
    outMessage= new Vector(30,10);
    String outstr="系统公告:<font color=blue>"+kickname+"</font>被踢出了聊天室";
    String str1="no";
    String systemSpeak = "yes"; outMessage.addElement(str1);
    outMessage.addElement(Name);
    outMessage.addElement(str1);
    outMessage.addElement(outstr);
    outMessage.addElement(systemSpeak);
    outMessage.addElement(str1);
    application.setAttribute("Message", outMessage);
    }
            sqlbean.freeRs(rs);
    out.print("<script>alert(\"该用户已经被踢出!\");");
    out.print("window.location=\"advanced.jsp\"</script>");
          }
          else
          {
            sqlbean.freeRs(rs);
    out.print("<script>alert(\"只有经验大于1000分的用户才能踢人!\");");
    out.print("window.location=\"advanced.jsp\"</script>");
          }
       }
          else
          {
    out.print("<script>alert(\"只有注册用户且经验大于1000才能踢人!\");");
    out.print("window.location=\"advanced.jsp\"</script>");
          }%>
    </body>
    </html>
      

  3.   

    sqlstring="update chatuser set EXPERIENCE='"+exp+"'"; 你这句当然有错了,where条件在哪里啊,你这样肯定都改了,应该改成"update chatuser set experience='"+exp+"' where id ="+rs.getInt(id);
      

  4.   

    if(rs.next()) 
       { 
          int exp= rs.getInt("EXPERIENCE"); 
    //下面这段逻辑上有问题,这样写,如果该记录的exp>1000,就修改所以的记录.
          if (exp>1000) 
          { 
            exp= exp - 50; 
            sqlstring="update chatuser set EXPERIENCE='"+exp+"'"; 
            sqlbean.executeUpdate(sqlstring); 
    应改为
    if(rs.next()) 
       { 
          int exp= rs.getInt("EXPERIENCE"); 
          //从结果集中取出能标志这条记录的主键.
          类型 pk = rs.get***("***");
          if (exp>1000) 
          { 
            exp= exp - 50; 
            sqlstring="update chatuser set EXPERIENCE='"+exp+"'where 主键字段名 = '"+ pk +"'"; 
            sqlbean.executeUpdate(sqlstring);