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

本文介绍了在使用JDBC连接MySQL数据库时遇到的中文查询乱码问题及其解决方案。通过设置JDBC URL中的字符编码为UTF-8,解决了中文查询条件在传输过程中因编码不一致导致的乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在写代码时,使用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,欢迎志同道合的小伙伴!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值