在java类中写带中文的sql语句,查询结果为空

String query="select * from Restaurant where Restaurant_name='紅樹林';";
rs=stm.executeQuery(query);
这是我在封装好的数据库类中写的sql语句,查询结果为空(rs.next() 为false )

如果改用id查询,即:
String query="select * from Restaurant where Restaurant_id='1';";
就能查询到结果

如果在mysql的workbench中输入这条命令:
select * from Restaurant where Restaurant_name='紅樹林';
也能查询到结果

从页面接受参数到servlet再到数据库类我都查看过了,restaurant_name,都是没有乱码的。所以我之间就在那条sql语句中打入搜索的餐厅名,结果还是查询不出结果。
请问要怎么办呢!

7个回答

开启一下mysql执行的sql记录
http://jingyan.baidu.com/article/4f34706ee3e700e387b56dd7.html
然后看最终通过java方式再数据库中执行的sql是什么样的。
是不是繁体字引起的

String query="select * from Restaurant where Restaurant_name='紅樹林';";
试试下面这样
String query="select * from Restaurant where Restaurant_name='紅樹林'";

在连接数据库时的characterEnCoding也应设为UTF-8

show variables like 'character%'; 看mysql的编码,看看是不是编码问题

把你的sql语句打印,比较一下,不就知道 了吗! 亲

为什么 sql里总有个分号, 你是发错了,还是怎么回事?
这是你用程序调用的sql :String query="select * from Restaurant where Restaurant_name='紅樹林';";
这是你在sql工具里直接执行的sql: select * from Restaurant where Restaurant_name='紅樹林';
你觉得这俩结果能一样吗

mysql字符集问题,当执行sql时,传入中文是乱码,而在MySQL工具中使用中文是可以的

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问