问题描述
- 在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语句中打入搜索的餐厅名,结果还是查询不出结果。
请问要怎么办呢!
解决方案
开启一下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工具中使用中文是可以的