Mysql数据库中PreparedStatement 在使用sql语句无法查询中文的问题
2014-04-06 01:45
519 查看
我在写JDBC的是时候,遇见了因为在SQL语句中含有中文无法运行的情况,于是我把这句话放到mysql客户端中测试,结果通过,我就估计不是字符编码问题,是PreparedStatement这个接口做了一些我不知道的处理导致这个问题的发生。而且一般直接使用?问号代替动态查询要求,而在客户端中必须加上双引号,于是我测试了一下直接把这个SQL语句写上去运行,结果没问题,只是加上了两个转义字符\"。
username = "\""+username+"\"";这句话是进行字符串处理,加上双引号。
String sql = "select name,password from "+tableName+" where name="+username+"";
这句话是重点,一定不能使用PreparedStatement提供的字符串处理方法,一定要直接自己拼接出字符串来运行,这样对于中文的处理就没问题了。
如果还是无法解决问题,试着把数据库编码修改成utf-8
characterEncoding=utf8
end
username = "\""+username+"\"";这句话是进行字符串处理,加上双引号。
String sql = "select name,password from "+tableName+" where name="+username+"";
这句话是重点,一定不能使用PreparedStatement提供的字符串处理方法,一定要直接自己拼接出字符串来运行,这样对于中文的处理就没问题了。
如果还是无法解决问题,试着把数据库编码修改成utf-8
characterEncoding=utf8
end
相关文章推荐
- 使用C#对MySQL数据库执行存在中文的SQL语句,不返回值的问题
- pl/sql developer 查询语句无法使用中文条件
- 使用plsql时查询Oracle语句中文无法匹配问题
- 解决SQL语句中含有中文字符无法查询问题
- 解决SQL语句中含有中文字符无法查询问题
- otl下直接用sql查询语句无法查询最新的记录的问题
- 使用mysql数据库查询时遇到中文的问题
- SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题 (转)
- 解决pl/sql developer 中文字段显示乱码或无法用中文作查询条件的问题
- sql语句作为字段保存到mysql数据库中无法通过的问题
- php使用mysql-timeout包,解决sql语句查询超时问题
- SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题
- Mysql数据库执行sql语句的中文乱码问题
- SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题
- Mysql数据库理论基础之三 --- 数据类型及SQL结构化查询语句使用
- 在ORM框架中使用原生sql语句进行聚合查询遇到的问题
- 关于Hibernate在使用原生SQL语句多表查询所遇到的问题
- 代码中执行sql语句访问mysql,无法匹配中文字符的问题
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)