mysql中文字符模糊查询问题
时间:2009-03-02
来源:互联网
jsp页post提交 String id =new String(request.getParameter("id").getBytes("iso8859-1"),"GBK");
查询为 list=spd.selectSpxx(id,id,page);
当查询英文时
nai
com.mysql.jdbc.ServerPreparedStatement[1] - select * from spxx where A1 like '%nai%' or A2 like '%nai%' limit 0,5
当查中文时
奶
com.mysql.jdbc.ServerPreparedStatement[1] - select * from spxx where A1 like '%?%' or A2 like '%?%' limit 0,5
在mysql数据库中查 select * from spxx where A1 like "%奶%" or A2 like "%奶%" limit 0,5
可得到结果 请问该怎么解决
public List selectSpxx(String pinyin,String hanzi,int t){
Connection con=null;
PreparedStatement stmt=null;
ResultSet rs = null;
List list =new ArrayList();
con=new DB().getConnection();
try {
stmt=con.prepareStatement("select * from spxx where A1 like ? or A2 like ? limit ?,5 ");
stmt.setString(1, "%"+pinyin+"%");
stmt.setString(2, "%"+hanzi+"%");
stmt.setInt(3, t);
rs=stmt.executeQuery();
System.out.println(stmt);
while(rs.next()){
spxxBean xb=new spxxBean();
xb.setA1(rs.getString("A1"));
xb.setA2(rs.getString("A2"));
xb.setA3(rs.getString("A3"));
xb.setA8(rs.getString("A8"));
xb.setA12(rs.getDouble("A12"));
xb.setA13(rs.getInt("A13"));
xb.setId(rs.getInt("id"));
list.add(xb);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
rs.close();
stmt.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println(list.size());
return list;
}
public List select(String value[]){
Connection con=null;
PreparedStatement stmt=null;
ResultSet rs=null;
List spList=new ArrayList();
con=new DB().getConnection();
try {
stmt=con.prepareStatement("Select * from spxx where id=?");
for(int i=0;i<value.length;i++){
stmt.setString(1, value[i]);
rs=stmt.executeQuery();
}
while(rs.next()){
spxxBean sp=new spxxBean();
sp.setA1(rs.getString("A1"));
sp.setA2(rs.getString("A2"));
sp.setA3(rs.getString("A3"));
sp.setA8(rs.getString("A8"));
sp.setA12(rs.getDouble("A12"));
sp.setA13(rs.getInt("A13"));
sp.setId(rs.getInt("id"));
spList.add(sp);
}
}catch(SQLException e){
e.printStackTrace();
}
return spList;
}
作者: mayifeng165 发布时间: 2009-03-02
估计你的jdbc配置的 url没写好。贴上来看看!
作者: java2000_net 发布时间: 2009-03-02
首先你要确认的的sql存储时的编码方式为GBK 或 GB2312 或UTF-8
还有就是mysql用模糊查询时当参数是从别的地方传过来的时候,要用
stmt.setString(1, "%"+你的中文参数+"%");
不能够把传过来的参数写在select语句当中,select中只能用?代替
作者: yang_zheng_2008 发布时间: 2009-03-02
作者: lazybears 发布时间: 2009-07-01
第二种方法(没有用处再试):把数据库的A1改成binary
作者: zzs0618 发布时间: 2009-07-01
http://www.cublog.cn/u/10921/showart_196779.html
作者: chouy 发布时间: 2009-07-12
characterEncoding=gbk
作者: holdlg 发布时间: 2011-08-27
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28