可是在读取文本的时候,可没有把每个字都拆开!'%" + yxmc + "%'
yxmc读到的就是人民解放这几个字啊!

解决方案 »

  1.   

    StringBuffer sql = new StringBuffer("select * from gjj11 where ");
    for(int i = 0; i < yxmc.length(); i++)
      sql.append("like '%" + yxmc.charAt(i) + "%' or");
    //删除最后一个多余的or
    sql.setLength(sql.length() - 3);
      

  2.   

    写错一点:
    sql.append("xxmc like '%" + yxmc.charAt(i) + "%' or ");
      

  3.   

    一个中文由两个字符组成,在得到yxmc时,要用encoder.cn2uni(request.getParameter("yxmc"));进行转成中文!所以上面的方法不行!!!
      

  4.   

    错误!在Java里面一个汉字对应的就是一个char
    转换工作是不必要的,你只需要在所有的request.getParameter()之前调用一次
    request.setCharacterEncoding("GBK");就可以了,根本不需要自己去转换!这个方法在绝大部分的情况下可以解决getParameter的中文问题
      

  5.   

    对!都是unicode,一字一码,技术上 不需要区分e文还是中文字符但是但是我又输入中文又输入英文单词的时候,问题就来了,总不能把每个英文字母都拆出来吧
      

  6.   

    public ArrayList searchJxschoolByYxmc1(String yxmc) throws Exception {
        Connection con = null;
        ResultSet rs = null;
        PreparedStatement ps = null;
        JxschoolForm jxschoolForm = null;
        ArrayList jxschoolList = new ArrayList();    try {
          con = database.getConnection();
          StringBuffer sql = new StringBuffer("select * from gjj11 where ");
          for(int i = 0; i < yxmc.length(); i++)
          sql.append("xxmc like '%" + yxmc.charAt(i) + "%' or");
          sql.setLength(sql.length() - 3);
          
        
          ps = con.prepareStatement(sql);
          rs = ps.executeQuery();
          if (rs != null) {        while (rs.next()) {
              jxschoolForm = new JxschoolForm();
              if (rs.getString("xxmc") != null) {
                jxschoolForm.setXxmc(rs.getString("xxmc"));
              }
              else {
                jxschoolForm.setXxmc("");
              }
              if (rs.getString("xxdz") != null) {
                jxschoolForm.setXxdz(rs.getString("xxdz"));
              }
              else {
                jxschoolForm.setXxdz("");
              }
              if (rs.getString("provname") != null) {
                jxschoolForm.setProvname(rs.getString("provname"));
              }
              else {
                jxschoolForm.setProvname("");
              }                   if (rs.getString("xxxz") != null) {
                jxschoolForm.setXxxz(rs.getString("xxxz"));
              }
              else {
                jxschoolForm.setXxxz("");
              }          if (rs.getString("bxlxname") != null) {
                jxschoolForm.setBxlxname(rs.getString("bxlxname"));
              }
              else {
                jxschoolForm.setBxlxname("");
              }          if (rs.getString("xzlbname") != null) {
                jxschoolForm.setXzlbname(rs.getString("xzlbname"));
              }
              else {
                jxschoolForm.setXzlbname("");
              }          jxschoolList.add(jxschoolForm);
            }      }
        }
        catch (Exception ex) {
          /** @todo  */
          LogUtil.error(logger,
                        "error ocoured while searchTycjByKsh method---" +
                        ex.getMessage());    }
        finally {
          try {
            database.disConnect(con);
            if (ps != null) {
              ps.close();
              ps = null;
            }
            if (rs != null) {
              rs.close();
              rs = null;
            }
            if (con != null) {
              con.close();
              con = null;
            }
            if (database != null) {
              database = null;
            }
          }
          catch (Exception ex) {
            /** @todo  */
          }    }
        return jxschoolList;  }
    我把程序放进去了,但是 ps = con.prepareStatement(sql);这一步报错“cannot resolve symbol:menthod prepare Statement (java.lang StringBuffer )in inferface java.sql.Connection"
    我不知道应该怎么样做才能实现功能!
    我真的是太多东西不懂了!!!
      

  7.   

    ps = con.prepareStatement(sql.toString());