SQL语句中出现中文字符时JDBC报错,解决办法

(1)当SQL中出现汉字时,直接执行SQL命令,可以得到正确结果

(2)当使用JDBC查询时,报错

严重: Servlet.service() for servlet [springMvc] in context with path [/web_store] threw exception [Request processing failed; nested exception is org.springframework.jdbc.BadSqlGrammarException: StatementCallback; 
bad SQL grammar [select remainGB 空闲,usedGB 已使用,usedNonDFSGB 非HDFS使用 from hdfsData  limit 1]; nested exception is java.sql.SQLException: You have an error in your SQL syntax; 
check the manual that corresponds to your MariaDB server version for the right syntax to use near '??,usedGB ???,usedNonDFSGB ?HDFS?? from hdfsData  limit 1' at line 1] with root cause
java.sql.SQLException: You have an error in your SQL syntax; 
check the manual that corresponds to your MariaDB server version for the right syntax to use near '??,usedGB ???,usedNonDFSGB ?HDFS?? from hdfsData  limit 1' at line 1

(3)解决办法

在JDBC连接的url中加入useUnicode=true&characterEncoding=UTF-8, 比如: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

这样,SQL语句可以将中文正确编码,查询出结果。

如果JDBC连接的url在XML,需要将&转义

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" >
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}${jdbc.dbName}?useUnicode=true&amp;characterEncoding=UTF-8"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

oracle坏块修复实例

最近几天发现库里有坏块了,环境是11gR2, linux平台的64位的库。以下是我的修复办法,基于dbms_repair做的在线修复,也可以基于备份rman来修...

3209
来自专栏杨建荣的学习笔记

使用awk来解析dump文件 (73天)

dump文件是平时工作中经常碰见的,有时候得到一个dump,但是没有提供一些更多的信息,导入的时候就很可能会有问题。 如果某个用户默认表空间是user,但是du...

3478
来自专栏西安-晁州

sqlserver - FOR XML PATH

FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活...

1960
来自专栏Albert陈凯

2017年11月1日课后作业Hive 第二次课程DDL内部表、外部表、临时表的创建和特性DML

2017年11月1日课后作业 Hive 第二次课程 回顾上节课的内容 Hive是什么 SQL -> MapReduce 为什么会有Hive 给非Java编程者对...

2876
来自专栏数据之美

Hive 在多维统计分析中的应用 & 技巧总结

多维统计一般分两种,我们看看 Hive 中如何解决: 1、同属性的多维组合统计 (1)问题: 有如下数据,字段内容分别为:url, catePath...

2248
来自专栏文渊之博

T-SQL基础--TOP

理解TOP子句 众所周知,TOP子句可以通过控制返回行的数量来影响查询。 我们知道TOP子句能很容易的满足返回指定行数的子集,接下来有一些例子来展示什么情况下使...

18310
来自专栏pangguoming

SQL语句大小写是否区分的问题,批量修改整个数据库所有表所有字段大小写

一、实例介绍 SQL语句大小写到底是否区分呢?我们先从下面的这个例子来看一下: 例: --> 创建表,插入数据: declare @maco table (nu...

3487
来自专栏个人分享

Spark工程开发常用函数与方法(Scala语言)

import org.apache.spark.{SparkContext, SparkConf} import org.apache.spark.sql.{S...

642
来自专栏用户2442861的专栏

Python: Enum枚举的实现

http://www.cnblogs.com/codingmylife/archive/2013/05/31/3110656.html

562
来自专栏数据之美

Hive 中的复合数据结构简介以及一些函数的用法说明

目前 hive 支持的复合数据类型有以下几种: map (key1, value1, key2, value2, ...) Creates a map wit...

3315

扫码关注云+社区