我用SSH三个框架做的项目,写的语句是:
public List searchInfor(String str,int x,int y){
   session = sessionFactory.openSession();
   String hql = "from Information where ITitle like '%"+str.toString().trim()+"%'";
   Query query = session.createQuery(hql);
   query.setFirstResult(x);
   query.setMaxResults(y);
   List list = query.list();

   System.out.print(list);
   session.close();
   return list;
}当str传进来英文值时可以查到数据,但是str传中文进来时查不出来数据,程序不报错,只是查不出来东西··这是为什么啊?哪里出错了????
(注:过滤器写过了,登陆的时候用中文名字登陆,传入的是中文值,都可以登陆进去)

解决方案 »

  1.   

    我用的是SQLserver2000,不用转换吧,直接写个过滤器就可以了啊,而且我用中文名登陆的可以成功啊··登陆还是传值进去查找啊·
      

  2.   

    设断点Debug下,调试的时候对str.toString().trim()进行Watch,看执行到这句时它是什么值。
      

  3.   

    我也感觉是这句话的问题,直接like str试一试。
      

  4.   


    我把语句改成这样了,还是不行:
    public List searchInfor(Information infor,int x,int y){
       session = sessionFactory.openSession();
       String hql = "from Information i where i.ITitle like '%"+infor.getITitle()+"%'";
       Query query = session.createQuery(hql);
       query.setFirstResult(x);
       query.setMaxResults(y);
       List list = query.list();
       System.out.print(list);
       session.close();
       return list;
    }
      

  5.   

    在Query query = session.createQuery(hql); 这一句上面把str的值print出来看看。
      

  6.   

     String hql = "from Information where ITitle like '%"+str.toString().trim()+"%'"; 
    from Information where ITitle like '%"+str.toString().trim()+"%'这句看看是什么值,就知道原因了。
      

  7.   

    直接println打印str.toString()出来,看看是什么
      

  8.   

    String hql = "from Information where ITitle like '%"+str.toString().trim()+"%'";
    System.out.println(hql);
    打印出这条hql语句看看。。
      

  9.   

    数据库是SQLserver2000 我没设置,是默认的。应该是GB2312吧·
      

  10.   

    可能数据库字符集问题,你和弄成gbk 44看。
    再一个就是""会不会出问题,其它没了,想不出。
      

  11.   

    用log4j打印输出一下执行的SQL语句,看看是不是有问题
    应该是中文乱码问题,我碰到过一次的
      

  12.   

     "from Information where ITitle like '%"+str.toString().trim()+"%'"; 
    你这种拼SQL的方式不对,改成站位符的方式  ?   =: