使用JDBC连接数据库,查询条件有中文时无结果

今天在写代码时,使用JDBC连接MySQL数据库,在servlet中写好sql语句后,启动tomcat在浏览器打开,输入查询条件发现没有查询到任何东西,看看控制台发现没有报错。那这个时候能想到的应该就是编码问题了。

我的request和response以及其他的东西都设置成了utf-8编码,包括数据库、表和字段。心累。后来发现原来JDBC的url中也得设置一下编码。遂改成如下格式

private static String url = "jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf-8";

之后就没有问题了。


原因:当你的查询条件中有中文的时候,在传输的过程中会进行转码,如果在url中没设置编码,那么连接到mysql查询时中文就会成为乱码。

我特地在表中增加了一行记录
这里写图片描述
然后把url改成如下形式

private static String url = "jdbc:mysql://127.0.0.1:3306/mybatis";

启动tomcat后打开网页,在网页中输入中文的查询条件,本该是有记录的,但没有任何输出,输入ceshi,则输出第七条记录。这说明上述原因是对的,中文的查询条件在传输到mysql时会进行转码。


别用baidu用google!

个人博客http://www.codeliu.com,欢迎志同道合的小伙伴!

猜你喜欢

转载自blog.csdn.net/a_helloword/article/details/80196993