本帖最后由 gzk_guodong 于 2010-10-01 14:01:21 编辑

解决方案 »

  1.   

    sql语句不要使用拼接,容易出错。可以使用点位符,变量等来处理参数,如
    String sql = "select name from user where name=:name";
    Query query = session.createSQLQuery(sql);
    query.setParameter("rname", username);sql语句里的:name就是用来点位的,然后在query里调用setParameter来设置它的值,这种方式可以防止sql注入,而且sql语句清晰,不易出错。
      

  2.   

    你是想做一个 多各条件 而且不确定条件的查询吧?
    你这种实现方法太死的吧,如果条件多就不知道有多少种判断了,出现以上情况,可能是你有些情况没判断到。
    其实没必要用if这样死判断,用个数组把文本框传过的的一个值、和一个列名接收参考代码请看下面:ACtion 类public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    XuanzForm xuanzForm = (XuanzForm) form;
    DBConnection db=new DBConnection();
    UserInfo us=new UserInfo();
    String [] row=new String [5];//把需要查询的列名用数组装着
    row[0]="username";
    row[1]="age";
    row[2]="sex";
    row[3]="love";
    row[4]="type";
    String [] zhi=new String [5];
    zhi[0]=xuanzForm.getUserinfo().getUsername();
    zhi[1]=String.valueOf(xuanzForm.getUserinfo().getAge());
    if(xuanzForm.getUserinfo().getAge()==0){
    zhi[1]="";
    }
    zhi[2]=xuanzForm.getUserinfo().getSex();
    zhi[3]=xuanzForm.getUserinfo().getLove();
    zhi[4]=xuanzForm.getUserinfo().getType();
    List list=db.getlistinfo(row,zhi); 调用方法
    request.setAttribute("list",list);
    return mapping.findForward("index");
    }
    查询的方法:Row 是列名 args是对应列名的值
    public List getlistinfo(String[] row, String[] args) {
    UserInfo us = null;
    List list = new ArrayList();
    String sql = "select * from Uinfo where ";
    String str = "";
    String str2 = "";
    String str3 = "";
    for (int i = 0; i < args.length; i++) {
    if (args[i] != null && !args[i].equals("")) {
    str = row[i] + "='" + args[i] + "' and ";
    } else {
    continue;
    }
    str2 = str2 + str;
    }
    str3 = sql + str2.substring(0, str2.length() - 5);
    System.out.println(sql + str2.substring(0, str2.length() - 5));
    try {
    ResultSet rs = this.getResultSet(str3, null);
    while (rs.next()) {
    us = new UserInfo();
    us.setUsername(rs.getString("username"));
    us.setAge(rs.getInt("age"));
    us.setLove(rs.getString("love"));
    us.setType(rs.getString("type"));
    us.setSex(rs.getString("sex"));
    list.add(us);
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return list;
    }
    }