MYSQL5+ODBC+MFC开发了个小程序,往数据库中插入记录,下面是出错的语句。(查询语句正常,汉字也能正常显示。)请高手指点其中的道理,以及解决方法多谢。 
wsprintf(buf, "insert into material (material_name ,material_unit , material_type ) values ( '%s','%s','%s') ", mymaterial_name, mymaterial_unit, mymaterial_type);        rc = SQLExecDirect(hSTMT, (SQLCHAR *)buf, SQL_NTS);
程序执行到以上代码时异常推出。rc=-1
1,我把mymaterial_name, mymaterial_unit, mymaterial_type三个值输入中文时报错。
2,我把三个值输入英文就可以插入到MYSQL中了。
3,我在WINDOW的控制台中用MYSQL命令登陆后,直接执行SQL语句,也能正常插入汉字值。语句如下:
insert into material (material_name, material_unit, material_type) value ( " 大白菜 "," 斤 ","菜");

解决方案 »

  1.   

     在你的ODBC方法中,先执行一下 set names 'gbk';http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
    MySQL 中文显示乱码
      

  2.   

    ODBC头次使用,不知道用哪个函数执行set names 'gbk';请高手明示?
      

  3.   

    就象你执行普通的SELECT * FROM 。。 一样,执行一下 set names 'gbk';
      

  4.   

    我执行下面这两句代码还是不行: 
    strcpy(buf,"set names 'gbk'");
    rc = SQLExecDirect(hSTMT, (SQLCHAR *)buf, SQL_NTS);
    返回值是rc=-1
      

  5.   

    1,自己回复下,问题已经解决,在创建数据库时设置数据集为UTF8即可。
    2,但是又有个新问题,插入汉字可以了,控制台里查询出来汉字显示是正常的。但是程序里查询出来是乱码。是怎么回事?