c++,mysql,插入中文记录,乱码,经过一天半的搜索与寻找还是没有把问题搞清楚。
我详细说一下情况:
以下是环境:mysql>status;
Connection id: 11
Current database:
Current user: root@localhost
SSL: Not in use
Using delimiter: ;
Server version: 5.0.22-community-nt
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: gbk
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
TCP port: 3306
Uptime: 1 hour 22 min 7 sec
my.ini的内容
[client]
port=3306
[mysql]
default-character-set=gbk
[mysqld]
....
default-character-set=gbk
db.opt里的设置是这样的default-character-set=gbk
default-collation=gbk_chinese_ci
执行:show create table vehicle_info:
CREATE TABLE `vehicle_info` (
`VID` int(11) NOT NULL auto_increment,
`VNO` varchar(45) NOT NULL,
`COLOR` varchar(10) default NULL,
`OWN_DEPART` int(11) default NULL,
`IN_DATE` datetime default NULL,
`OTHER` varchar(200) default NULL,
`TERMINAL_ID` int(11) default NULL,
`GROUP_ID` int(11) default NULL,
`SERIAL` varchar(20) default NULL,
`STATUS` int(11) default NULL,
`FACTORY` varchar(50) default NULL,
`FCT_SN` varchar(20) default NULL,
`ENGINE_SN` varchar(50) default NULL,
`FRAME_SN` varchar(50) default NULL,
PRIMARY KEY (`VID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPRESSED
现在症状是:在mysql administrator里中文字段可显示,可插入。在程序里跟踪sql包含中文字符串比如
INSERT INTO vehicle_info (VID,VNO,COLOR,OWN_DEPART,IN_DATE,TERMINAL_ID,GROUP_ID,SERIAL,STATUS,FACTORY,FCT_SN,ENGINE_SN,FRAME_SN,OTHER) VALUES ('2','A-12312','白色','1','08-10-21 14:21:54','1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),mysql_real_query返回值为1,即不成功,错误提示为: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。
如果把语句放到administator里则可以插入。
如果都改为utf8,查询结果在listCtrl中显示乱码,
针对以上情况,高人请指点一二。。!