mysql语句中出现中文的情况下,在java程序中不会有结果,也不会报错.
今天,小白码代码时,碰到了一个错误:
String sql="select * from t_student t1,t_class t2,t_grade t3 where t1.classId=t2.classId and t2.gradeId=t3.gradeId and t1.stuName like '%Jay%' limit 0,8 ";
String sql="select * from t_student t1,t_class t2,t_grade t3 where t1.classId=t2.classId and t2.gradeId=t3.gradeId and t1.stuName like '%李四%' limit 0,8 ";
Connection connection=dbUtil.getCon();
String sql="select * from t_student t1,t_class t2,t_grade t3 where t1.classId=t2.classId and t2.gradeId=t3.gradeId and t1.stuName like '%李四%' limit 0,8 ";
PreparedStatement pstmt=connection.prepareStatement(sql);
ResultSet rs=pstmt.executeQuery();
奇怪的是,第一个英文作条件AC了,第二个中文做查询居然WA,返回的结果集为null。呆呆地想了很久,最终求助于万能的博客,很幸运的找到了一位博主的帖子得以解决。
My God!虽然猜到了是编码错误,但我项目是部署在了Tomcat服务器,我以为是页面发送请求时,tomcat解读时使用的是其他编码。感谢上面链接里的博主。
解决方法:
设置数据库Url时,添加数据库jdbc连接的编码格式为UTF-8。
错误:dbUrl=jdbc:mysql://localhost:3306/p-student
正确:dbUrl=jdbc:mysql://localhost:3306/p-student?useUnicode=true&characterEncoding=UTF-8
参考链接:
mysql语句中出现中文的情况下,在java程序中不会有结果,也不会报错.
https://blog.csdn.net/weixin_43113563/article/details/102765896