VS2005 用mysql_real_query插入中文,不报错,但入不了库。该怎么处理

VS2005 用mysql_real_query插入中文,不报错,但入不了库。

表的结构如下

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中直接运行这条语句,就可以直接插入,这是怎么会事??

小弟刚参加工作,经验还很少

各位前辈,请指教。



set names ‘gb2312’

这句你加到哪里了?




没有搞过VC。不过set names gb2312一定得和你的插入语句在一个SESSION内才可以。

插不进去一般都是因为没有在一个SESSION内。




set names gbk;




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′)”);

VS2005 用mysql_real_query插入中文,不报错,但入不了库。该怎么处理

相关文章:

你感兴趣的文章:

标签云: