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 条评论
登录 后参与评论

相关文章

来自专栏Java3y

WebSocket就是这么简单

前言 今天在慕课网上看到了Java的新教程(Netty入门之WebSocket初体验):https://www.imooc.com/learn/941 WebS...

8475
来自专栏微服务生态

Dubbo简化类图

本文只是简单的将Dubbo的类结构图罗列出来,在下一次介绍中将重点讲解Dubbo框架的原理以及使用方法。

672
来自专栏技术分享

redisLock redis分布式锁

redis-lock redis setnx cmmand java object condition queue 条件队列 retrycount 带有重试次数...

2176
来自专栏JMCui

Netty 系列二(传输).

    上一篇文章我们提到 Netty 的核心组件是 Channel、回调、Future、ChannelHandler、EventLoop,这篇文章主要是对 C...

1032
来自专栏chenssy

【死磕Sharding-jdbc】---orchestration简介使用

sharding-jdbc2.x核心功能之一就是orchestration,即编排治理,什么意思呢?官方文档介绍--2.0.0.M1版本开始,sharding-...

1294
来自专栏你不就像风一样

SpringBoot分布式 - Dubbo+ZooKeeper

692
来自专栏进击的程序猿

raft 系列解读(2) 之 测试用例raft 系列解读(2) 之 测试用例

基于mit的6.824课程,github代码地址:https://github.com/zhuanxuhit/distributed-system

992
来自专栏pangguoming

kafka 主要内容介绍

根据官网的介绍,ApacheKafka®是一个分布式流媒体平台,它主要有3种功能:

1005
来自专栏菩提树下的杨过

redis 学习笔记(3)-master/slave(主/从模式)

类似mysql的master-slave模式一样,redis的master-slave可以提升系统的可用性,master节点写入cache后,会自动同步到sla...

2018
来自专栏IT笔记

架构设计之Spring-Session分布式集群会话管理

前言 通常在web开发中,会话管理是很重要的一部分,用于存储与用户相关的一些数据。对于JAVA开发者来说,项目中的session一般由Tomcat或者jetty...

3669

扫码关注云+社区