• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

mysql 搞代码 7年前 (2018-06-02) 157次浏览 已收录 0个评论

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:VS2005 用mysql_real_query插入中文,不报错,但入不了库。该怎么处理
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址