我详细说一下情况:以下是环境: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中显示乱码,针对以上情况,高人请指点一二。。!
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中显示乱码,针对以上情况,高人请指点一二。。!
解决方案 »
- 如何创建文件夹?MFC
- CListCtrl在更改选择的时候,OnLvnItemchanged会被调用3次,为什么?
- 关于MFC GDI绘图
- 怎么获取当前时间,精确到毫秒,在线等待
- 一个对菜鸟而言 关于文件使用的大问题 请各位大虾指点迷津, 在这我先谢了
- 求助:“error C2712: 无法在要求对象展开的函数中使用 __try”是什么原因?
- 如何从屏幕上取一部分到BITMAP类中?
- 如何在ODBC中使用m_dbgrid1.SetDataSource(LPUNKNOWN)函数
- DELPHI转C++日志
- 如何让view类和对话框时时存在?
- 关于Socket编写发送无附件E_mail程序的问题
- 还是RichEdit的问题
恩,这里确实是个问题,被我忽略了,可是改过之后也是不行。谢谢Mackz
//你的工程师Unicode还是ANSI?
//unicode,取到数据库内容后,用MultiByteToWideChar转为unicode,再显示
//ANSI,取到数据库内容后,用MultiByteToWideChar转为unicode,再用WideCharToMultiByte转为ANSI,再显示
我的工程为多字符集
没有经过转化
conn.ConnectionString = @"Server=" + DataBaseOperator.strIP
+ ";Database=" + DataBaseOperator.strDataBaseName + ";Uid=" + DataBaseOperator.strAccountName + ";Pwd=" + DataBaseOperator.strPassWord + ";charset=gbk;";