代码如下:
else if (action.equalsIgnoreCase("update")) {//修改操作

//String USERID =(String) httpServletRequest.getSession().getAttribute("USERID");
String sql = "update BIZ_SYS_MANAGER set USERID=" ;
sql += "'" + managerForm.getUSERID() + "'"+",";
sql += "USERNAME='" + managerForm.getUSERNAME() + "'" + ",";
//sql += "ALIAS='" + managerForm.getALIAS() + "'" ;
sql += " where USERID = '" +USERID + "'";

ManagerBean managerbean = new ManagerBean();
managerbean.update(sql);


return actionMapping.findForward("returnlist");
运行结果update BIZ_SYS_MANAGER set USERID='1',USERNAME='', where USERID = ''  为什么WHERE后面的USERID=''啊
这段代码哪里出错,劳驾高手指点

解决方案 »

  1.   

    确定下你的session里有没有USERID;想取值,必须先setAttribute啊。
      

  2.   

    调试时看sql字符串,检查是否正确,或者把自己把sql打印出来,执行看是否正确
      

  3.   

    你在session中setAttribute了吗?还有,对String进行连接时,最好不要用一连串的加.
    比如说:String str = "";
    str = "a" + "b" + "c" + "" + "d";这样是没什么毛病的.
    但是:
    str = "a";
    str += "b";
    str += "c";
    str += "d";
    这样就不太好,因为每次加的时个都会为str开发一块新的内存空间.-------------------
    else if (action.equalsIgnoreCase("update")) {//修改操作
     
    String USERID =(String) httpServletRequest.getSession().getAttribute("USERID");StringBuffer sql = new StringBuffer("update BIZ_SYS_MANAGER set USERID=");
    sql.append("'" + managerForm.getUSERID() + "'"+",");
    sql.append"USERNAME='" + managerForm.getUSERNAME() + "'" + ",");
    //sql += "ALIAS='" + managerForm.getALIAS() + "'";
    sql.append" where USERID = '" +USERID + "'");
     
    ManagerBean managerbean = new ManagerBean();
    managerbean.update(sql.toString());return actionMapping.findForward("returnlist");
      

  4.   

    晕,看这种 SQL 的拼接太费劲了,为什么不用 PreparedStatement 呢。
      

  5.   

    把你的代码放出来,看你的USERID 从哪里值了,我看你把那句(//String USERID =(String) httpServletRequest.getSession().getAttribute("USERID");)注释掉了,所以你前面应该有一个地方定义这个USERID,你是不是没有给它赋值啊?