模糊搜索中的问题! 可是在读取文本的时候,可没有把每个字都拆开!'%" + yxmc + "%'yxmc读到的就是人民解放这几个字啊! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 StringBuffer sql = new StringBuffer("select * from gjj11 where ");for(int i = 0; i < yxmc.length(); i++) sql.append("like '%" + yxmc.charAt(i) + "%' or");//删除最后一个多余的orsql.setLength(sql.length() - 3); 写错一点:sql.append("xxmc like '%" + yxmc.charAt(i) + "%' or "); 一个中文由两个字符组成,在得到yxmc时,要用encoder.cn2uni(request.getParameter("yxmc"));进行转成中文!所以上面的方法不行!!! 错误!在Java里面一个汉字对应的就是一个char转换工作是不必要的,你只需要在所有的request.getParameter()之前调用一次request.setCharacterEncoding("GBK");就可以了,根本不需要自己去转换!这个方法在绝大部分的情况下可以解决getParameter的中文问题 对!都是unicode,一字一码,技术上 不需要区分e文还是中文字符但是但是我又输入中文又输入英文单词的时候,问题就来了,总不能把每个英文字母都拆出来吧 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"我不知道应该怎么样做才能实现功能!我真的是太多东西不懂了!!! ps = con.prepareStatement(sql.toString()); 关于SPRING3.0整合STRUTS2 如何给<select></select>赋值 jfreechart 怎样能在鼠标点击该图形某一折点时,获得该点的值? ORACLE+WEBLOGIC EJB3.0前景咋样? 求救:关于jdbc 存取 oracle clob 的问题? 大家指点关于struts方面的? tomcat5,配置好后管理工具Administration和Manager的用户名和密码是什么?? java 转码 问题怎么解决!!!! mybatis 生成PDF文件,等! JBoss和tomcat到底是什么关系?
for(int i = 0; i < yxmc.length(); i++)
sql.append("like '%" + yxmc.charAt(i) + "%' or");
//删除最后一个多余的or
sql.setLength(sql.length() - 3);
sql.append("xxmc like '%" + yxmc.charAt(i) + "%' or ");
转换工作是不必要的,你只需要在所有的request.getParameter()之前调用一次
request.setCharacterEncoding("GBK");就可以了,根本不需要自己去转换!这个方法在绝大部分的情况下可以解决getParameter的中文问题
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"
我不知道应该怎么样做才能实现功能!
我真的是太多东西不懂了!!!