mysql用中文查询不到结果_Mysql 通过中文查询数据查不出结果问题

与数据为字符编码有关。若编码设置得不当,就会出现查不出结果。

package org.hbyx.bean;

import java.util.ArrayList;

import java.util.List;

import org.hibernate.Query;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

public class DButil {

private SessionFactory sf;

public SessionFactory getSf() {

return sf;

}

public void setSf(SessionFactory sf) {

this.sf = sf;

}

public List> getInfo(String hql) {

Session session = sf.openSession(); //创建会话

Query q = session.createQuery(hql); //执行查询

List> list = q.list(); //得到结果列表

session.close();

return list; //将结果列表返回

}

@SuppressWarnings("unchecked")

public int getTotalPage(String tp, int span) { //用来得到总页数

Session session = sf.openSession(); //创建会话

Query q = session.createQuery(tp); //执行查询

List list = q.list(); //得到结果列表

int count = list.get(0).intValue(); //得到总记录条数

int page = count % span == 0 ? (count / span) : (count / span + 1); //得到总页数

session.close();

return page;

}

@SuppressWarnings("unchecked")

public List> getPageContent(String hql, int nowPage, int span) {//得到某页的内容

List temp = new ArrayList(); //创建List,用来存放页面内容

Session session = sf.openSession(); //创建会话

Query q = session.createQuery(hql); //执行查询

List list = q.list(); //得到结果列表

int i = 0; //标志位用来记录条数

while((nowPage-1)*span+i< list.size() && i

temp.add(list.get((nowPage-1)*span + i)); //将结果添加到temp中

i++; //标志位自加

}

session.close();

return temp; //将结果返回

}

public Object getObject(String tablename, String id) {

Session session = sf.openSession(); //创建会话

Object obj = null; //申明引用

if(tablename.equals("GoodsInfo")) { //当得到商品对象时

obj = session.get(GoodsInfo.class, id); //得到对象

} else if(tablename.equals("GoodsClassInfo")) { //当得到类别对象时

obj = session.get(GoodsClassInfo.class, id); //得到对象

}

return obj;

}

}

其中tp 和 hql为

String tp = "select count(*) from GoodsInfo where gname like '%苹果%';

String hql = "from GoodsInfo where gname like '%苹果%';

执行getInfo(String hql) 和 getTotalPage(String tp, int span)  getPageContent(String hql, int nowPage, int span)

List list = q.list();

list为大小为0的list.也就是说没有查出任何符合条件的数据的结果。

这里就是因为数据库的字符集设置问题(mysql数据库存在这种问题)

可以在连接mysql数据库时在连接字符串中进行设置如:

url="jdbc:mysql://localhost:3306/db_pos?useUnicode=true&characterEncoding=utf8"

这样就可以查到数据了。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-10-28 17:41

浏览 2704

评论


版权声明:本文为weixin_39972151原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。