我在做一个查询系统...  我想问一下前辈们... 我想做一个多项查询的  假如我有5项提供查询  可以按名字 类型 编号等..  如果我添其中一项  就按添的那项给我返回结果  如果我添其中两项或3项  它就按综合的给我查询出结果  我想请前辈们指导我一下看该怎么写其中数据库连接层的这个包含SQL语句的查询 ... 谢谢了  希望可以帮忙写个例子传上来 急用  在线等回复!!!!

解决方案 »

  1.   

    我刚做完这样一个小模块
    哈哈真巧
    其实很简单,你做一个QueryNode类,需要查询项要set进去
    如有一项是name,这个类有一个setName(String name)方法在生成sql的时候一个一个便利这个QueryNode的属性,如果有值,则添加到where里面
    摸索着做,其实也很简单的
      

  2.   

    private PreparedStatement getQueryStatment(QueryNode node) {
        try {
          ArrayList list = new ArrayList(10);
          StringBuffer sql = new StringBuffer();
          sql.append("select * from myDB ");
          boolean isToAddAnd = false;      
          HashMap map = node.getQueryParams();
          Iterator it = map.keySet().iterator();
          while (it.hasNext()) {
            String key = (String) it.next();
            if (isToAddAnd) {
              sql.append(" and ");
            }else{
              sql.append(" where ");
            }
            sql.append(key + "=?");
            list.add(map.get(key));
            isToAddAnd = true;
          }
          PreparedStatement statement = getStatment(sql.toString());
          if (statement == null) {
            return null;
          }
          for (int i = 0; i < list.size(); i++) {
            statement.setString( (i + 1), (String) list.get(i));
          }
          return statement;
        }
        catch (SQLException ex) {
          return null;
        }
      }大致如此,QueryNode里有一个HashMap,用来存储查询条件细节可以再调整
    必须结贴才有分,把分数添加到你要给分的人拜师?哈哈,你可以开个拜师贴呀,肯定有人来应聘的,哈哈