mysql 中文字段乱码

1、我在mysql数据库中建了一张中文字段的表
create table test(
姓名 varchar(20)
)

2、然后用jdbc中的PreparedStatement对象执行插入或修改操作报错,好像sql中的中文列名变成了乱码,不能成功执行。
部分sql语句如下:
[color=red] PreparedStatement pstmt = conn.prepareStatement("insert into test(姓名) values('00001')");[/color]
或者
[color=red] PreparedStatement pstmt = conn.prepareStatement("update test set 姓名='1111'");[/color]
然后执行:
[color=red]pstmt.executeUpdate();[/color]
报如下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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 '??) values('00001')' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
……………………

最近操作别人公司的mysql业务数据库,其中所有表的字段都是中文的,我有没办法改,所以必须使用中文的,没到万不得已,我一般打死都不在数据库中用中文(作为一个中国人的悲哀!!)。

请哪位帮忙解决下,急用!!!!!!!!
先感谢!!!!

dao

4个回答

连接串的问题,
在数据库连接串中加上编码设置:

String dbUrl = "jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=GB2312 ";

简单的方法是在连接数据库成功后,在查询操作前先执行
mysql_query("set character set gb2312");

mysql_query("SET NAMES gb2312");

字段名用中文确实很奇怪。。。。。
数据库建表的时候字符集设为utf-8试试

create table test(
姓名 varchar(20)
)
default charset=utf8;

然后
[code="java"]PreparedStatement pstmt = conn.prepareStatement("update test set 姓名='1111'");
[/code]

你这句里是不是标点用错了 “姓名”两边的单引号还是要在英文输入法的'',不是中文输入法下‘’

你先在数据库中写一个成功的sql语句嘛,然后把sql语句粘贴到程序中不是就行了嘛 。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问