jdbc操作mysql中文插入问题

insert into table values(1,'中文'),数据库的编码和表的编码均是utf-8
在mysql workbench中插入没有问题,就是java中插入时报错,为啥呢?
报错信息:
java.sql.SQLException: Syntax error or access violation, message from server: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1825)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1020)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1109)
at com.mysql.jdbc.MysqlIO.sqlQuery(MysqlIO.java:1070)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2027)
at com.mysql.jdbc.Connection.execSQL(Connection.java:1984)
at com.mysql.jdbc.Statement.execute(Statement.java:896)
at cn.com.elaw.callcenter.service.SearchService.addRecord(SearchService.java:111)
at cn.com.elaw.callcenter.service.SearchService.main(SearchService.java:141)
另外,用绑定变量的方式:
String updateSQL = "insert into ccdb.to_queryInfo(humanID) values(?)";
PreparedStatement myPreparedStatement = myConnection.prepareStatement(updateSQL);
// myPreparedStatement.setString(1, AH);
myPreparedStatement.setInt(1, humanID);
不管有没有中文都报错

换了一个包后,插入不报错了,但是插入的数据乱码

设置mysql的安装目录

basedir = "d:\fycx\mysql"

设置mysql数据库的数据的存放目录,必须是data,或者是\xxx\data

datadir="d:\fycx\mysql\data"

设置mysql服务器的字符集

#default-character-set=utf8
很明显的,数据库服务器编码被注释了
#default-character-set=utf8 这不等于没设置么

另外,你倒底是插入前乱码还是插入后乱码?
不回答问题的关键,谁知道你问题出在哪里?

连接设置的问题,修改为
jdbc:mysql://localhost:3306/YourDb?useUnicode=true&characterEncoding=UTF-8即可

mysql啥版本

insert into ccdb.to_queryInfo(humanID) values(?)
插入语句没必要带数据库名ccdb,去掉

设置MySQL的默认字符集为utf8,找到客户端配置[client]在下面添加。

default-character-set=utf8

找到服务器配置[mysqld]在下面添加

default-character-set=utf8

设定MySQL数据库以utf8编码运行,连接MySQL数据库时使用utf8编码

停止和重新启动MySQL

net stop mysql

net start mysql

检查mysql版本及对应的驱动版本。但好像即使有bug的旧版驱动也能支持这两条语句的。试一下:
[code="sql"]show variables like '%char%';[/code]看一下数据库编码,如果要能正常插入中文,编码格式除了character_set_filesystem和character_sets_dir之外其他都应该是utf8,如果要正常显示中文,则除以上两条外加character_set_system其他都应该是gbk或者gb2312的编码格式。
此外,据提示:
at cn.com.elaw.callcenter.service.SearchService.addRecord(SearchService.java:111)
你这样代码之前是否已经打开数据库连接?

http://www.iteye.com/problems/50052

编码问题一般注意三个地方
1.数据库编码
2.java访问数据库编码
3.浏览器页面提交给Java后台的编码
楼主可再三处的交接处做打印,查看问题出在哪里

插入之前就乱码了?
还是说插入之后才乱码?