用的是odbc连接,DRIVER={MySQL ODBC 5.2w Driver};charset=utf8mb4;SERVER=%s;PORT=%d;DATABASE=%s;UID=%s;PASSWORD=%s;OPTION=3;
insert语句:
szSQL.Format(_T("INSERT INTO test")
_T("(ID, Name)")
_T("VALUES(%d, '%s')"), iBackHistoryID, szTargetBegin);
m_Conn.pConn->Execute((_bstr_t)szSQL, &RecordsAffected, adCmdText);

解决方案 »

  1.   

    szSQL.Format(_T("INSERT INTO test(ID, Name)")  
    _T("VALUES(%d, '
      

  2.   

    字符集的原因。按下贴中方法检查一下字符集设置。http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  3.   

     第一次采用MySQL作为业务应用的数据库,由于经验不够丰富,在安装数据库的时候选择了GB2312编码。起先用的也算得心应手,然而后续发现了生僻字不能显示的情况,把我搞得焦头烂额。经过好几天的摸索、学习,终于把问题解决了。记下解决步骤,与跟我一样的新手分享。步骤一: 分析出现乱码的原因由于GB2312字符集只收录了6763个汉字,导致一些生僻字无法正常显示。步骤二:确定解决方法把字符集由GB2312改成GBK。但是由于不能丢弃之前的数据,如何修改MySQL的字符集成了关键。步骤三:字符集的修改a. 先导出表结构mysqldump -u root -p --default-character-set=gbk -d 数据库名 > createdb.sql其中参数-d表示只导出表结构,不导出数据。b. 打开createdb.sql,手工把gb2312替换成gbk。c. 导出所有记录mysqldump -u root -p --quick --no-create-info --extended-insert --default-character-set=gb2312 数据库名 > data.sql其中参数--no-create-info表示不生成建表语句;--default-character-set=gb2312表示按照原来字符集导出所有数据。d. 打开data.sql,手工把SET NAME gb2312改成SET NAME gbk。注意:如果data.sql很大,可能需要找一些替换工具来完成替换操作,否则可以直接用UltraEdit之类的编辑工具打开修改。e. 在新的服务器上创建表,执行createdb.sql。mysql -u root -p 数据库名 < createdb.sqlf. 导入数据,执行data.sqlmysql -u root -p 数据库名 < data.sqlg. 创建数据库用户。到这儿已经完成了数据库字符集从gb2312到gbk的修改,接下去可以登录数据库,手工把显示为"?"的乱码字重新更新一下。
      

  4.   

    你拿sql再程序段执行下试试
      

  5.   

    你拿sql在mysql客户端执行下试试
      

  6.   

    在MYSQL命令行下插入,看看提示什么show variables like 'char%'; 
      

  7.   

    sql在mysql客户端执行是可以的,我的mysql 用的是utf8mb4 vc程序用的是unicode编码