连接数据库进行数据查询,用英文可以查,用中文就获取不到数据,过滤器试过了不行,sql = new String(sql.getBytes("ISO8859-1"),"UTF-8");这样也不行求救啊,弄了两天了都不行
public List queryByName(String stuName) throws UnsupportedEncodingException {
List stuList = new ArrayList();
String sql = "SELECT * FROM student WHERE stuName='"+stuName+"'";
//sql = new String(sql.getBytes("ISO8859-1"),"UTF-8");
try {
this.initConnection();
ResultSet rs = conn.createStatement().executeQuery(sql);
while (rs.next()) {
Student stu = new Student();
stu.setStuId(rs.getString("stuId"));
stu.setStuName(rs.getString("stuName"));
stu.setStuGender(rs.getString("stuGender"));
stu.setStuClass(rs.getString("stuClass"));//(rs.getInt("stuAge"));
stu.setStuGrade(rs.getString("stuGrade"));
stu.setStuMajor(rs.getString("stuMajor"));
stu.setStuLevel(rs.getString("stuLevel"));
stu.setStuFace(rs.getString("stuFace"));
stu.setStuExam(rs.getString("stuExam"));
stuList.add(stu);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
this.closeConnection();
}
return stuList;
}
public void closeConnection() {
try {
if (conn != null) {
conn.close();
conn = null;
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
------解决方案--------------------
先检查你数据库里有没有数据,把sql直接copy进数据库验证数据库里数据是正常的,再来检查代码里有没有错误
------解决方案--------------------
先打印一下stuName是不是乱码,如果乱码了,就先把字符串编码纠正过来,new String(sql.getBytes("?"),"UTF-8"),getBytes是要知道包含utf-8字符串的输入流数据被还原成字符串时用的编码,不然他会乱套,如果不知道的话多种编码尝试一下,不一定就是ISO8859-1,也可能原始的输入流数据压根就不是utf-8编码,好复杂
如果没有乱码,那就是数据库那边乱码了,数据库接收到的sql语句乱码,应该可以设置客户端连接用的编码的,具体怎么设置,可以搜索一下,我用mysql,数据库服务器字符集直接设成utf-8,管他什么乱七八糟的,统一字符集远离乱码
------解决方案--------------------
这段你别拼接试试换种方式、、应该可以解决如果在拼接之前不是乱码的话!
------解决方案--------------------
乱码的问题。数据库编码呢?