我详细说一下情况:以下是环境: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中显示乱码,针对以上情况,高人请指点一二。。!

解决方案 »

  1.   

    自动增长的关键字字段(VID)不能赋值吧。
      

  2.   


    恩,这里确实是个问题,被我忽略了,可是改过之后也是不行。谢谢Mackz 
      

  3.   

    MySQL的默认字符集是UTF-8,你插入的字符是UTF-8吗?
      

  4.   

    你的mysql是什么版本,我估计是版本问题
      

  5.   

    如果都改为utf8,查询结果在listCtrl中显示乱码, 
    //你的工程师Unicode还是ANSI?
    //unicode,取到数据库内容后,用MultiByteToWideChar转为unicode,再显示
    //ANSI,取到数据库内容后,用MultiByteToWideChar转为unicode,再用WideCharToMultiByte转为ANSI,再显示
      

  6.   

    Server version:        5.0.22-community-nt回6楼:
    我的工程为多字符集
    没有经过转化
      

  7.   

    //取到的是UTF-8编码字符串,要正常显示,先转成unicode,再转成ANSI
      

  8.   

    取到的是UTF-8编码字符串,要正常显示,先转成unicode,再转成ANSI
      

  9.   

    连接字符串中添加"charset=gbk",如下:
           conn.ConnectionString = @"Server=" + DataBaseOperator.strIP
                        + ";Database=" + DataBaseOperator.strDataBaseName + ";Uid=" + DataBaseOperator.strAccountName + ";Pwd=" + DataBaseOperator.strPassWord + ";charset=gbk;";