关于一个查询的程序:
这个是获得结果的函数 
public ResultSet getRes(Statement stmt,String sql){
        try {
            rs = stmt.executeQuery(sql);
        } catch (SQLException ex) {
        }
        return rs;
    }
由这个函数调用
public List setQuery(CActionForm form,String[] values) throws Exception{      stmt = getStatement(getConnection());
      String sql =javaFormat.getQueSql(form,values);
System.out.println(sql);
      rs = getRes(stmt,sql);//..........
 System.out.println(rs.getRow());
      List list = new ArrayList();
        list = javaFormat.fromRsToList(form,rs);
        this.doClose();
      return list;
    }我测试了下并打印出来
打印出来sql语句:
当是:select * from student where age like '%12%' and username like '%李四%'一个结果都没有输出,但是实际上是有一条符合条件的.
当是:select * from student where age like '%12%' and username like '%%'  就正常的有两条记录出现了.请问这个是什么问题?
从以上描述中能看出来么?

解决方案 »

  1.   

    应该是中文乱码的的问题吧~你用的数据库是mysql?oracle?
      

  2.   

    你把两条sql语句放到相应的执行环境中去执行一下,再比较一下结果
      

  3.   

    我用的是mysql
    刚刚突然想到了~应该是中文乱码的事情,我试了一下,要是username like '%李四%'这里是个换成英文的可以了~
    可是怎么解决呢?
      

  4.   

    你在google搜索一下~很多解决方案!
      

  5.   

    搜索中文的问题....
    http://hi.baidu.com/lovekaili/blog/item/f250b2c74fe808d8d000601e.html
    我就在这解决的
      

  6.   

    '%李四%'
    百分号里面内容是从哪儿传过来的?b/s应用中会出现编码问题的地方大概有三个
    1, 前台页面 
    2, 后台处理 action
    3, 数据库表中然后就是这三处的相互传递的时候容易出现编码不一致,从而导致一些乱码问题。你首先要确定是哪个环节出的问题。如果是前台传到后台后出问题
    察看前台编码设置没问题的话
     public ResultSet getRes(Statement stmt,String sql){ 
            try { 
                // 在这里把 sql 进行一次转码 
                rs = stmt.executeQuery(sql); 
            } catch (SQLException ex) { 
            } 
            return rs; 
        } http://blog.csdn.net/Ice0River/archive/2007/08/17/1747613.aspx  
    参照下这个看有帮助没