表的结构如下
CREATE TABLE `t_s_ags_log` (
  `tran_time` datetime NOT NULL COMMENT '交易时间',
  `tran_no` char(5) default NULL COMMENT '交易码',
  `tran_name` varchar(128) default NULL COMMENT '交易名称',
  `tran_src_ip` char(15) default NULL COMMENT '发起方IP',
  `res_code` char(2) NOT NULL COMMENT '响应码',
  `tran_pkg` varchar(1024) default NULL COMMENT '交易报文',
  PRIMARY KEY  (`tran_time`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312 COMMENT='AGS交易日志表 ';插入之前用了 set names 'gb2312'//代码如下
strcpy(sSql,"insert into t_s_ags_log values('2007-12-03 11:55:41','91008','测试通讯','192.168.0.168','00','91008')");
if( 0 != mysql_real_query(&mysql,sSql,(unsigned int)strlen(sSql)))
{
 printf("%s\n",mysql_error(&mysql) );
}
我运行之后不报错,返回值为0,说明执行成功了。
可数据库里并没有插入任何值,跟没运行一样。
而如果我把'测试通讯'替换成英文或数字,程序就插入成功了。
我在MySql-Front中直接运行这条语句,就可以直接插入,这是怎么会事??
小弟刚参加工作,经验还很少
各位前辈,请指教。

解决方案 »

  1.   

    set   names   'gb2312'这句你加到哪里了?
      

  2.   

    strcpy(sSql,"set names 'gb2312'");     
    mysql_real_query(&mysql,sSql,(unsigned   int)strlen(sSql));//就用到这里 strcpy(sSql,"insert   into   t_s_ags_log   values('2007-12-03   11:55:41','91008','测试通讯','192.168.0.168','00','91008')"); 
      

  3.   

    没有搞过VC。不过set names gb2312一定得和你的插入语句在一个SESSION内才可以。插不进去一般都是因为没有在一个SESSION内。
      

  4.   

    set names 用在这是没有问题的。
    你的源代码文件编码是不是GB2312?即这句代码中的测试通讯编码是不是GB2312的?
    strcpy(sSql,"insert   into   t_s_ags_log   values('2007-12-03   11:55:41','91008','测试通讯','192.168.0.168','00','91008')");